我有一个字典数据集,其中有许多项,它对一组固定的标准(例如,3个标准)的评级:
item1 = { "Criteria1" : 5, "Criteria2" : 2, "Criteria3" : 1 }
item2 = { "Criteria1" : 0, "Criteria2" : 1, "Criteria3" : 5 }
item3 = { "Criteria1" : 4, "Criteria2" : 2, "Criteria3" : 1 }
我必须找到最好的方法来定义与用户项最相似的项。 例如:
^{pr2}$可能导致:
similarity = { "item1": 0.95, "item2": 0.17, "item3": 0.91 }
余弦的相似性是实现这一点的一种方法? 如果是这样的话,我发现scikit-learn在python中可以做到这一点。字典中的项与余弦项的相似性如何转换?在
Tks公司
是的,余弦距离是一个很好的指标,找到相似的项目,我相信它是最常用的指标推荐系统。在
对于数据结构,我建议使用pandas dataframe来保存数据集。它很容易创建、灵活并且可以很容易地转换为numpy数组(
df.values
将为您提供内部numy数组)。在创建数据帧,如下所示。在
^{pr2}$你可以使用数据帧从sklearn使用任何距离度量。在
注意:不推荐使用1d数组的余弦相似性,因此上面的代码将给您一个错误,因为useritem是
(3,)
形状。您可以使用pd.Series(useritem).values.reshape(1, -1)
将其重塑为更合适的(1, 3)
。在您可以使用DictVectorizer将dicts转换为形状[n个样本,n个特征]的特征矩阵,然后轻松地对其应用余弦相似性。在
相关问题 更多 >
编程相关推荐