python向量之間相似性的計算方法(持續更新中)

2021-09-24 07:47:46 字數 1067 閱讀 2170

from:

親測有效的方法:

1、余弦相似性(cosine)

(1)使用sklearn中的向量相似性的計算包,**如下:

這個函式的輸入是n個長度相同的list或者array,函式的處理是計算這n個list兩兩之間的余弦相似性,最後生成的相似矩陣中的s[i][j]表示的是原來輸入的矩陣中的第i行和第j行兩個向量的相似性,所以生成的是n*n的相似性矩陣

from sklearn.metrics.pairwise import cosine_similarity

cosine_similarity([1, 0, 0, 0], [1, 0, 0, 0])

(2)使用scipy包中的距離計算,**如下:

這裡的vec1和vec2都是一維的array向量。

from scipy.spatial.distance import cosine

cosine(vec1, vec2)

2、皮爾森相關係數(pearson)

>>> from scipy import stats

>>> a = np.array([0, 0, 0, 1, 1, 1, 1])

>>> b = np.arange(7)

>>> stats.pearsonr(a, b)

(0.8660254037844386, 0.011724811003954654)

>>> stats.pearsonr([1,2,3,4,5], [5,6,7,8,7])

(0.83205029433784372, 0.080509573298498519)

前面的0.866025和0.862050即為所要求的相關係數,具體用法參見:scipy.stats.pearsonr

3、歐式距離

歐式距離,即歐幾里得距離,這裡的計算有三種方式:

(1)已知vec1和vec2是兩個numpy array,即陣列,使用numpy包計算:

import numpy

dist = numpy.sqrt(numpy.sum(numpy.square(vec1 - vec2)))

(2)也是使用numpy包,相對更加直接,**如下:

奶牛的相似性

奶牛的相似性 description 農夫約翰有兩頭奶牛,他想要知道,這兩頭奶牛到底有多相似,所以他給每頭奶牛拍了mn 指m行n列 的數碼相片,他想要你寫乙個程式幫助他。mn的數碼相片可以分辨出奶牛身上黑色和白色的斑塊,下面是兩頭奶牛的數碼 x 表示黑色部分,表示白色部分 其中m 5,n 7。奶牛1...

基於Python計算余弦相似性

在我們計算相似度時,常常用到余弦夾角來判斷兩個向量或者矩陣之間的相似度,cosine 余弦相似度 取值範圍 1,1 當兩個向量的方向重合時夾角余弦取最大值1,當兩個向量的方向完全相反夾角余弦取最小值 1,兩個方向正交時夾角余弦取值為0。x 1x 1 x1 和 x 2x 2 x2 分別是輸入的兩個向量...

訊號相似性的描述

訊號相似性的描述 在很多的應用場合,經常要描述兩個訊號的相似性。比如在雷達的訊號檢測中,要比較所接收的訊號是否就是發射訊號的延時。有時候,甚至還要描述乙個訊號本身的相似性,比如在語音編碼中,要通過語音頻號本身的相似性,來 下一時刻的訊號值。我們知道,在訊號處理中,用相關函式來描述訊號的相似性。描述兩...