Python:查找集群内用户之间的分数相似性

Python: finding score similarity between users within a cluster

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

例如,df:

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

我想要这样的结果:

相同 useri_j 得分之间的相似性 category_cluster 如果不在同一集群中,则不计算相似性。你会如何衡量相似性?

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

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

至于你的相似性示例 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 值将使 相似 更少或更多便宜.