计算数据集之间相似性百分比的有效方法
Posted
技术标签:
【中文标题】计算数据集之间相似性百分比的有效方法【英文标题】:Effective way to calculate a similarity percentage between data sets 【发布时间】:2011-02-11 23:39:13 【问题描述】:我目前正在处理用户对象——每个对象都有许多目标对象。目标对象不是用户特定的,即用户可以共享相同的目标。我正在尝试设计一种方法来计算两个用户之间的“相似性百分比”......(即,考虑到他们共享多少目标以及他们不共享多少目标)有没有人有这种类型的经验情况?如果有帮助,我正在将 Grails 与 mysql 一起使用。
谢谢
【问题讨论】:
【参考方案1】:执行此操作的标准方法是 Jaccard 相似度。如果 A 是第一个用户的目标集,B 是第二个用户的目标集,则 Jaccard 相似度为:
#(A intersect B)/#(A union B)
这是他们共享的目标数除以两人共同拥有的投票总数(计算他们仅共享一次的目标)。因此,如果第一个用户的目标 A=1,2,3 而第二个用户的目标 B=2,4 那么是这样的:
A intersect B = 2
A union B = 1,2,3,4
#(A intersect B)/#(A union B) = 1/4
Jaccard 相似度始终介于 0(他们没有共享目标)和 1(他们有相同的目标)之间,因此您可以将其乘以 100 得到一个百分比。
http://en.wikipedia.org/wiki/Jaccard_index
【讨论】:
以上是关于计算数据集之间相似性百分比的有效方法的主要内容,如果未能解决你的问题,请参考以下文章
pandas使用pct_change函数计算数据列的百分比变化:计算当前元素和前一个元素之间的百分比变化(包含NaN值的情况以及数据填充方法)