import math
import numpy as np
from math import sqrt
x = np.array([1,3,2])
y = np.array([-2,1,-1])
# 相似度
def cosDis (vector1,vector2):
num = 0.0
xdenom = 0.0
ydenom = 0.0
for i in range(0,len(vector1)):
xdenom += vector1[i]**2
ydenom += vector2[i]**2
num += vector1[i]*vector2[i]
return num/(math.sqrt(xdenom)*math.sqrt(ydenom))
a = cosDis(x,y)
print(a)
#
def OSDistance1 (v1,v2):
sq = sum((v1-v2)**2)
dist = math.sqrt(sq)
return dist
b = OSDistance1(x,y)
print(b)
#
def multipl(a,b):
sumofab=0.0
for i in range(len(a)):
temp=a[i]*b[i]
sumofab+=temp
return sumofab
#
def pearson(x,y):
N=len(x)
sumofx=sum(x)
sumofy=sum(y)
sumofxy=multipl(x,y)
sumofxx=multipl(x,x)
sumofyy=multipl(y,y)
upside=sumofxy-sumofx*sumofy/N
downside=sqrt((sumofxx-float(sumofx**2)/N)*(sumofyy-float(sumofy**2)/N)) #此处要转成浮点数保证精度
return upside/downside
c = pearson(x,y)
print(c)
python距离计算公式
最新推荐文章于 2021-05-22 20:53:40 发布