Я хочу создать простое рекомендательное пособие для книг, используя библиотеку 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])
Я сомневаюсь здесь, если он тренируется на весь набор данных, почему он создает антитест? Как я могу получить рекомендации для всех пользователей и в то же время обучить алгоритм для всего моего набора данных?