加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

使用jaccard相似性的Python Pandas距离矩阵

发布时间:2020-12-14 04:44:05 所属栏目:大数据 来源:网络整理
导读:我已经实现了一个使用jaccard相似性构造距离矩阵的函数: import pandas as pdentries = [ {'id':'1','category1':'100','category2': '0','category3':'100'},{'id':'2',{'id':'3','category1':'0','category2': '100',{'id':'4',{'id':'5','category3':'10
我已经实现了一个使用jaccard相似性构造距离矩阵的函数:

import pandas as pd
entries = [
    {'id':'1','category1':'100','category2': '0','category3':'100'},{'id':'2',{'id':'3','category1':'0','category2': '100',{'id':'4',{'id':'5','category3':'100'}
           ]
df = pd.DataFrame(entries)

和scipy的距离矩阵

from scipy.spatial.distance import squareform
from scipy.spatial.distance import pdist,jaccard

res = pdist(df[['category1','category2','category3']],'jaccard')
squareform(res)
distance = pd.DataFrame(squareform(res),index=df.index,columns= df.index)

问题是我的结果看起来像这样似乎是假的:

enter image description here

我错过了什么?例如,0和1的相似性必须是最大的,其他值似乎也是错误的

解决方法

看一下这些文档,scipy.spatial.distance中 jaccard的实现是jaccard的相异性,而不是相似性.这是使用jaccard作为度量时计算距离的常用方法.这是因为为了成为度量,相同点之间的距离必须为零.

在您的代码中,应该最小化0和1之间的相异性.其他值在不相似的背景下看起来也是正确的.

如果你想要相似性而不是相异性,只需从1中减去相异性.

res = 1 - pdist(df[['category1','jaccard')

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读