使用SurPRISE包python的similarities.cosine(带数据集)

时间:2017-07-03 08:04:00

标签: python pandas sklearn-pandas graphlab

简报:

我正在为Movielens 100k Dataset工作以推荐电影。到目前为止,我已经完成了foll。

  1. 值的排序

    df_sorted_values = df.sort_values(['UserID', 'MovieID']) print type(df_sorted_values)

  2. 使用NaN值打印矩阵

    df_matrix = df.pivot_table(values='Rating', index='UserID', columns='MovieID')

  3. 在其上执行5折简历

    reader = Reader(line_format="user item rating", sep='\t', rating_scale=(1,5)) df = Dataset.load_from_file('ml-100k/u.data', reader=reader) df.split(n_folds=5)

  4. 我使用SVD评估了数据集

    perf = evaluate(SVD(),df,measures=['RMSE','MAE']) print_perf(perf)

  5. 这里我需要使用相似的算法由相同的包(惊喜)提供,该包被写为surprise.cosine以预测缺失的值。这表明它需要(*args,**kwargs)个参数,但我对实际传递的内容毫无头绪。

  6. 生成相似之处我需要打印具有现已预测的替换NaN值的矩阵,稍后将用于推荐

  7. P.S。我可以接受来自CRAB,RECSYS,PANDAS和GRAPHLAB的不同解决方案,前提是它们也可以在步骤1到4中解决

    我过去的参考文献是:

    1. This手动,但没有显示参数的传递方式 也不是例子
    2. This与...没什么区别     第一

2 个答案:

答案 0 :(得分:0)

虽然计算2个向量之间的余弦相似性非常容易(1-np.dot(a,b)/(np.linalg.norm(a)*np.linalg.norm(b))

怎么样

如果您不想自己实施,我建议您使用Scipy

from scipy.spatial.distance import cosine

答案 1 :(得分:0)

这些相似度函数与以下文档一样使用:Using prediction algorithmsFAQThe algorithm base class - compute_similarities用于基于KNN的算法。它们不应该像你想要的那样被使用。

如果您选择使用SVD算法The algorithm base class - predict,则可能需要使用预测功能:

# Build an algorithm, and train it.
algo = SVD()
algo.train(trainset)
uid = str(196)  # raw user id  
iid = str(302)  # raw item id  
# get a prediction for specific users and items.
pred = algo.predict(uid, iid)