使用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) 问题是我的结果看起来像这样似乎是假的: 我错过了什么?例如,0和1的相似性必须是最大的,其他值似乎也是错误的 解决方法
看一下这些文档,scipy.spatial.distance中
jaccard 的实现是jaccard的相异性,而不是相似性.这是使用jaccard作为度量时计算距离的常用方法.这是因为为了成为度量,相同点之间的距离必须为零.
在您的代码中,应该最小化0和1之间的相异性.其他值在不相似的背景下看起来也是正确的. 如果你想要相似性而不是相异性,只需从1中减去相异性. res = 1 - pdist(df[['category1','jaccard') (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |