python兩個維度不相等的矩陣怎麼余弦相似度匹配

時間 2021-09-10 01:49:34

1樓:Rampant

余弦相似度

在NLP的任務裡,會對生成兩個詞向量進行相似度的計算,常常採用余弦相似度公式計算。

余弦相似度用向量空間中兩個向量夾角的余弦值作為衡量兩個個體間差異的大小。余弦值越接近1,就表明夾角越接近0度,也就是兩個向量越相似,這就叫"余弦相似性"。

我們知道,對於兩個向量,如果他們之間的夾角越小,那麼我們認為這兩個向量是越相似的。余弦相似性就是利用了這個理論思想。它通過計算兩個向量的夾角的余弦值來衡量向量之間的相似度值。

公式如下:

公式很簡單,呼叫numpy基本運算手擼乙個。

def cos_sim(vector_a, vector_b):

"""計算兩個向量之間的余弦相似度

:param vector_a: 向量 a

:param vector_b: 向量 b

:return: sim

"""vector_a = np.mat(vector_a)

vector_b = np.mat(vector_b)

num = float(vector_a * vector_b.T)

denom = np.linalg.norm(vector_a) * np.linalg.norm(vector_b)

sim = num / denom

return sim

sklearn.metrics.pairwise 包

官方文件

cosine_similarity()

傳入乙個變數a時,返回陣列的第i行第j列表示a[i]與a[j]的余弦相似度。

pairwise_distances()

該方法返回的是余弦距離,余弦距離= 1 - 余弦相似度,同樣傳入乙個變數a時,返回陣列的第i行第j列表示a[i]與a[j]的余弦距離。

例子def

learn_cosine_similarity

():a=[[

1,3,

2],[2

,2,1

]]from

sklearn.metrics.pairwise

import

cosine_similarity

from

sklearn.metrics.pairwise

import

pairwise_distances

print

('sim1:'

,cos_sim(a

[0],

a[1]))

print

('sim2:'

,cosine_similarity(a

))print

('sim3:'

,pairwise_distances(a

,metric

="cosine"

))Output:

sim1: 0.8908708063747479

sim2: [[10.89087081]

[0.89087081 1sim3: [[00.10912919]

[0.10912919 0

衡量兩個向量相似度的方法:余弦相似度_此時,此地,此身-CSDN部落格

乙個等比數列的任意兩項之和,是否互不相等?

肯定的啊.你這不就相當於,對於乙個b進製數字表示,選取兩個形如10.010.0的數。如果 0 的個數不一樣,那麼進製表示都不一樣,那數值肯定也不一樣啊. 季公子 在 Perplexboy 的回答上,原猜想等價於是否存在公比 以及正整數 使得 這裡給出結論 公比 為無理數時,猜想不成立,舉例觀察 移項...

非零互不相等的n個自然數,元素個數,積,和三者確定的話,是否解集是唯一的?

顯然,對於方程 至多有2個不同的實數根,證明略 這說明,對於任意給定的和 Sum 與乘積 Pro,至多存在一組實數對 x,y 使得 x y Sum,且 xy Pro 假設有2組不同的實數對 a,b 和 x,y 使得 a b x y Sum,且 ab xy Pro 令 t x a b y 0 則於是有...

智商和情商一定是兩個維度的嗎?

秦森 不知道別人是怎麼定義智商和情商的。智商是用來統計或者量化生命體智力的有值屬性。是人為創造的詞語或事物,一定程度上能夠反映出生命體智力的高低。智商是智力的度量。智力目前不可直接測得,所以要通過測試來評分,現今的各種測試也是相對科學,但是存在侷限性的。智商或者智力是描述生命體對外界資訊和已知資訊進...