Python:查找集群内用户之间的分数相似性
Python: finding score similarity between users within a cluster
如何计算 user
和 score
之间的相似度?
例如,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
值将使 相似 更少或更多便宜.
如何计算 user
和 score
之间的相似度?
例如,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
值将使 相似 更少或更多便宜.