我正在尝试根据用户的评分为用户实施推荐系统。我认为是最常见的一种。我读了很多书,并入围了 Surprise,这是一个基于 python-scikit 的推荐系统。
虽然能够导入数据并运行预测,但它并不完全符合我的要求。
现在我所拥有的:我可以传递 user_id、item_id 和评级,并获得该用户给出我通过的评级的概率。
我真正想做的事情:传递一个 user_id,然后根据数据获取该用户可能会高度喜欢/评价的项目列表。
from surprise import Reader, Dataset
from surprise import SVD, evaluate
# Define the format
reader = Reader(line_format='user item rating timestamp', sep='\t')
# Load the data from the file using the reader format
data = Dataset.load_from_file('./data/ecomm/e.data', reader=reader)
# Split data into 5 folds
data.split(n_folds=5)
algo = SVD()
# Retrieve the trainset.
trainset = data.build_full_trainset()
algo.fit(trainset)
//Inputs are: user_id, item_id & rating.
print algo.predict(3, 107, 1)
数据文件中的示例行。
第一列是 user_id,第二列是项目 id,第三列是评分,然后是时间戳。
196 242 3 881250949
186 302 3 891717742
22 377 1 878887116
244 51 2 880606923
166 346 1 886397596
298 474 4 884182806
115 265 2 881171488
253 465 5 891628467
305 451 3 886324817
6 86 3 883603013