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

Python:查找集群内用户之间的分数相似性,python,python-2.7,distance,similarity,cosine-similarity,Python,Python 2.7,Distance,Similarity,Cosine Similarity,如何计算用户和分数之间的相似性 例如,df: 我希望得到如下结果: 同一类别聚类中用户i_j得分之间的相似性如果不在同一聚类中,则不计算相似性。你如何衡量相似性 首先需要定义一个分数函数。其中,曼哈顿距离或欧几里德距离可能是最常用的距离。有关距离的更多信息,我建议您查看scikit learn,他们实现了各种各样的距离度量。寻找一个列表,你可以在以后研究它们各自的衡量标准 其中一些是距离度量元素的不同程度,最接近0的元素更相似,而另一些度量相似性,如指数核,更接近1的元素更相似。很容易在距离和相

如何计算用户和分数之间的相似性

例如,df:

我希望得到如下结果:


同一类别聚类中用户i_j得分之间的相似性如果不在同一聚类中,则不计算相似性。你如何衡量相似性

首先需要定义一个分数函数。其中,曼哈顿距离或欧几里德距离可能是最常用的距离。有关距离的更多信息,我建议您查看scikit learn,他们实现了各种各样的距离度量。寻找一个列表,你可以在以后研究它们各自的衡量标准

其中一些是距离度量元素的不同程度,最接近0的元素更相似,而另一些度量相似性,如指数核,更接近1的元素更相似。很容易在距离和相似性度量之间交换,因为最基本的度量是距离=1。-相似性假设两者都在[0,1]范围内

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

对于直接相似性度量。如果它们适合你的需要,你可以使用任何一种。它解释了每一个度量的含义

rbf_核的一个使用示例


gamma在这里的作用就像一个阈值,不同的gamma值会使相似性降低或降低成本。

您必须根据应用程序选择相似性。你是如何得出0.9作为i和j的相似性的?你在寻找某种相似性函数吗?对于多个维度,有一个共同的余弦相似性,这是一个很好的起点。然而,你的例子是一维的。是的,我在寻找这样的相似性函数,[0,1]范围。事实上,一维的,所以我有困难:通过相似性[I,j]=0.9,我的意思是,得分为4.5的项目I和得分为5的项目j在[0,1]范围内非常相似。谢谢你的链接@Silvia07是的,但为什么不是0.8或0.97,你是怎么得到0.9的?我会建议类似的东西,可能是最常用的相似性度量之一。这只是一个例子:我删除了这个例子。谢谢,我会研究一下rbf_内核。@Silvia07哦,好的,虽然你脑子里有某种测量方法,我会用一个如何使用rbf_内核的例子来编辑这篇文章。
    user    score   category_cluster
    i       4.5     category1
    j       5       category1
    k       9.5     category2
data = df['score']
similarity = rbf_kernel(data.reshape(-1, 1), gamma=1.) # Try different values of gamma