
現實生活中,我們經常提到距離這個詞,本文談的相似度就是基于距離定義的,當兩個向量之間的距離特別小時,就說這倆個向量相似度高,反之相似度不高。所以,衡量相似度的指標就是距離度量。
經常使用的相似度計算公式有:歐幾里得相似度、余弦相似度、皮爾遜相似度、曼哈頓相似度。
(1)歐幾里得相似度:

import numpy as np
def eculidDisSim(x,y):'''歐幾里得相似度'''return np.sqrt(sum(pow(a-b,2) for a,b in zip(x,y)))
if __name__=='__main__':a=np.array([1,2,3])b=np.array([6,5,4])sim=eculidDisSim(a,b)
(2)余弦相似度:

import numpy as np
def cosSim(x,y):'''余弦相似度'''tmp=np.sum(x*y)non=np.linalg.norm(x)*np.linalg.norm(y)return np.round(tmp/float(non),9)if __name__=='__main__':a=np.array([1,2,3])b=np.array([6,5,4])sim=cosSim(a,b)
(3)皮爾遜(pearsonr)相似度:

from scipy.stats import pearsonr
import numpy as np
def pearsonrSim(x,y):'''皮爾森相似度'''return pearsonr(x,y)[0]if __name__=='__main__':a=np.array([1,2,3])b=np.array([6,5,4])sim=pearsonrSim(a,b)
(4)曼哈頓相似度:

import numpy as np
def manhattanDisSim(x,y):'''曼哈頓相似度'''return sum(abs(a-b) for a,b in zip(x,y))if __name__=='__main__':a=np.array([1,2,3])b=np.array([6,5,4])sim=manhattanDisSim(a,b)