python距离计算公式

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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值