python 学习笔记(相似性计算方法)

本文探讨了Python中用于计算相似性的几种方法,包括基于距离的欧式距离、Pearson相关系数、Jaccard相关系数和Tanimoto系数。通过实例展示了这些方法如何应用于数据集,以评估个体间的品味相似程度。尽管每种方法都有其优缺点,但它们都是评估数据相似性的重要工具。
摘要由CSDN通过智能技术生成

实在不能理解为啥搜狗输入法每次我打biji的时候总是给我跳出荸荠(qi) (づ ̄ 3 ̄)づ,还有biaoshi,总是出标识(zhi)..╭(╯^╰)╮哼

  • 基于距离的相似度计算
    prefs[person][item]
    数据集格式如下:
    这里写图片描述
    example:
    aaaa={‘WANG’:{‘Lady in the Water’:3,’HAHA story’:2},…}
    from math import sqrt
    传入参数:
    prefs person1 person2

我们要计算两个人的品味相似程度,首先要找到有没有相同的item,如果没有,那么则返回0

si={}
for item in prefs[person1]:
    if item in prefs[person2]:
    si[item]=1
if len(si)==0:
    return 0

如果有相同的item,我们得到相应的score,可以计算其欧式距离:

totalsum=sum([pow(prefs[person1][item]-prefs[person2][item],2) for item in prefs[person1] if item in prefs[person]])

因为要返回一个0-1值的函数,0代表很差,1代表口味完全相同,而上述的欧式距离是距离越小口味越相近,距离为0时口味相同

return 1/(1+sqrt(totalsum))
  • pearson相关系数
    仅仅计算距离是不够的,假设person1对item评价为1.2,2.3,3.6,person2对item评价为:2.2,3.3,4.6,实际上这两个人的口味相同,但是person2评价稍高,用上述方法计算则会出现很大的误差,这时候我们引入一个相关系数的概念来修正“夸大分值”的情况。
    (PS:为啥我打xishu总是出现洗漱,╭(╯^╰)╮)
    pearson相关系数是判断两组数据与某一直线拟合程度的一种度量,它在数据不是很规范的时候,会倾向于给出更好的结果
    pearson相关系数
    采用第四种计算方法:
def pearson_distance(prefs,p1,p2):
    si={}
    for item in prefs[p1]:
        if item in prefs[p2]:
            si[item]=1
    n=len(si)
    if n==0:
        return 0
    sum1=sum([prefs[p1][it] for it in si])
    sum2=sum([prefs[p2][it] for it in si])
    sum1sq=
  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值