Получите прогнозы для всех пользователей с помощью алгоритма Surprise SVDpp - PullRequest
1 голос
/ 21 апреля 2020

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

Я сомневаюсь здесь, если он тренируется на весь набор данных, почему он создает антитест? Как я могу получить рекомендации для всех пользователей и в то же время обучить алгоритм для всего моего набора данных?

...