我正在为Movielens 100k Dataset工作以推荐电影。到目前为止,我已经完成了foll。
值的排序
df_sorted_values = df.sort_values(['UserID', 'MovieID'])
print type(df_sorted_values)
使用NaN值打印矩阵
df_matrix = df.pivot_table(values='Rating', index='UserID', columns='MovieID')
在其上执行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)
我使用SVD评估了数据集
perf = evaluate(SVD(),df,measures=['RMSE','MAE'])
print_perf(perf)
这里我需要使用相似的算法由相同的包(惊喜)提供,该包被写为surprise.cosine
以预测缺失的值。这表明它需要(*args,**kwargs)
个参数,但我对实际传递的内容毫无头绪。
生成相似之处我需要打印具有现已预测的替换NaN值的矩阵,稍后将用于推荐
P.S。我可以接受来自CRAB,RECSYS,PANDAS和GRAPHLAB的不同解决方案,前提是它们也可以在步骤1到4中解决
我过去的参考文献是:
答案 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 algorithms,FAQ,The 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)