我想使用Surprise
库和购买/不购买作为评级值(而不是经典的1到5)构建一个简单的图书推荐器
我这里的问题是,我想在我的whole dataset
上进行训练,这样我就可以得到对ALL users
的预测,所以我检查了这个令人惊讶的例子(examples/top_n_recommendations.py)
:
from collections import defaultdict
from surprise import SVD
from surprise import Dataset
def get_top_n(predictions, n=10):
...
# First train an SVD algorithm on the movielens dataset.
data = Dataset.load_builtin('ml-100k')
trainset = data.build_full_trainset()
algo = SVD()
algo.fit(trainset)
# Then predict ratings for all pairs (u, i) that are NOT in the training set.
testset = trainset.build_anti_testset()
predictions = algo.test(testset)
top_n = get_top_n(predictions, n=10)
# Print the recommended items for each user
for uid, user_ratings in top_n.items():
print(uid, [iid for (iid, _) in user_ratings])
我的疑问是,如果它在整个数据集上进行训练,为什么要建立一个反测试? 我怎样才能得到所有用户的推荐,同时在我的整个数据集上训练算法
试试这个: 您可以使用已经拟合数据的模型(algo),然后迭代所有用户和所有项目以计算估计的评分
使用惊奇库,您只能获得培训集中用户的预测。反测试集由不在培训集中的所有对(用户,项目)组成,因此它建议用户过去未与之交互的项目
这不是一个有效的答案,但可能会有所帮助
相关问题 更多 >
编程相关推荐