Python:在群集中查找用户之间的得分相似性

时间:2016-02-18 19:28:09

标签: python python-2.7 distance similarity cosine-similarity

如何计算userscore之间的相似度?

例如,df

    user    score   category_cluster
    i       4.5     category1
    j       5       category1
    k       9.5     category2

我希望得到如下结果:

同一useri_jcategory_cluster得分之间的相似性(如果不在同一个群集中)不会计算相似性。你会如何衡量相似性?

1 个答案:

答案 0 :(得分:0)

您需要先定义一个分数函数。其中,你有曼哈顿或欧几里德距离,这可能是最常用的距离。有关距离的更多信息,我建议您研究scikit-learn,它们实现了各种各样的距离(指标)。查看here以获取列表(您可以稍后研究每个列表的测量结果)。

其中一些是距离度量(元素有多么不同,最接近0越相似),而其他测量相似度(如指数内核,接近1更相似)。很容易在距离和相似度指标之间进行交换(假设两者都在distance = 1. - similarity范围内,是最基本的[0,1])。

至于你的相似性示例 similarity[i,j] = 0.9对我没有任何意义。 i and k的相似之处是什么?你使用哪个公式来获得0.9?如果你澄清它,我可以为你提供一个基于numpy的表示。

对于直接相似性指标,have a look here。如果符合您的需求,您可以使用其中任何一种。它解释了每个测量的内容。

rbf_kernel的示例用法。

data = df['score']
similarity = rbf_kernel(data.reshape(-1, 1), gamma=1.) # Try different values of gamma

gamma此处的行为类似于阈值 gamma的不同值会使相似更少或更多便宜