演算法 餘弦定理與相關性比較

2021-07-25 15:33:57 字數 1859 閱讀 2578

計算公式

餘弦定理是中學時代比較常見的數學公式之一。從幾何學的角度上,cosθ表示了兩個向量的比值。實際上可以用來對向量的「相似度」進行描述。

以下展現了二維、三維空間(平面、立體幾何)中兩個向量(夾角θ)的cosθ計算過程。 co

sθ=a

2+b2

−c22

ab對於二維向量有: co

sθ=x

1x2+

y1y2

(x21

+y21

)(x2

2+y2

2)−−

−−−−

−−−−

−−−−

√ 對於三維向量有: co

sθ=x

1x2+

y1y2

+z1z

2(x2

1+y2

1+z2

1)(x

22+y

22+z

22)−

−−−−

−−−−

−−−−

−−−−

−−−−

−√由上可知,比較兩個n維向量的相似度可轉換為求這兩個向量的cosθ。

若兩個向量完全一致,則cosθ結果為1;若高度相似,則結果接近於1;若結果越小,則越不相關。

**實現

如下為採用python實現向量空間並計算cos(相關性)值的**樣例。

class

vectorcompare:

# 計算向量大小

defmagnitude

(self,concordance):

total = 0

for word, count in concordance.iteritems():

total += count ** 2

return math.sqrt(total)

# 計算向量之間的 cos 值

defrelation

(self, concord1, concord2):

# relevance = 0

topvalue = 0

for word, count in concord1.iteritems():

if concord2.has_key(word):

topvalue += count * concord2[word]

return topvalue / (self.magnitude(concord1) * self.magnitude(concord2))

使用「向量空間搜尋引擎」來做相似度識別,具有很多優點:

- 不需要大量的訓練迭代

- 不會訓練過度

- 可以隨時加入/移除錯誤的資料檢視效果,對於無法識別的東西只要加入到搜尋引擎中,馬上就能識別了

- 很容易理解和編寫成**

- 提供分級結果,可以檢視最接近的多個匹配

其缺點是,分類的速度比神經網路慢很多,它不能找到自己的方法解決問題等等。

計算兩則新聞的相似度

計算的相似性

一般來說,首先想辦法將兩個向量化,然後進行比較。在向量化之前,需要對影象進行處理,例如:抽取固定顏色、位置的畫素,轉換為位圖格式(黑白兩色)。

如下給出了乙個將向量化的方法示例:

def

buildvector

(im):

d = {}

cnt = 0

for i in im.getdata():

d[cnt] = i

cnt += 1

return d

temp = buildvector(image.open("./.../%s" %(img_file)))

文字相似度演算法 餘弦定理

最近由於工作專案,需要判斷兩個txt文字是否相似,於是開始在網上找資料研究,因為在程式中會把文字轉換成string再做比較,所以最開始找到了這篇關於 距離編輯演算法 blog寫的非常好,受益匪淺。於是我決定把它用到專案中,來判斷兩個文字的相似度。但後來實際操作發現有一些問題 直接說就是查詢一本書中的...

統計 相關性與自相關性

相關係數度量指的是兩個不同事件彼此之間的相互影響程度 而自相關係數度量的是同一事件在兩個不同時期之間的相關程度,形象的講就是度量自己過去的行為對自己現在的影響。自相關,也稱 序列相關。是乙個訊號於其自身在不同時間點的互相關。非正式地來說,它就是兩次觀察之間的相似度對它們之間的時間差的函式。它是找出重...

關於數學中的正弦定理和餘弦定理的相關資訊的概述

以下內容都是從網上複製下來,主要是為了求相關幾何中的面積。在 abc中,角a b c所對的邊長分別為a b c,三角形外接圓的半徑為r。則有 即,在乙個三角形中,各邊和它所對角的正弦之比相等,該比值等於該三角形外接圓的直徑長度。定理變形 在解三角形中,有以下的應用領域 1 已知三角形的兩角與一邊,解...