Я пытаюсь внедрить систему рекомендаций для пользователей на основе их рейтинга.Я думаю, что самый распространенный.Я много читал и попал в короткий список Surprise, системы рекомендаций, основанной на Python-Scikit.
Хотя я могу импортировать данные и выполнять прогнозирование, это не совсем то, что мне хотелось бы.
Прямо сейчас, что у меня есть: Я могу передать user_id, item_id и rating и получить вероятность того, что этот пользователь даст оценку, которую я прошел.
Что я действительно хочу сделать: Передать 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, 2nd - идентификатор элемента, третий - рейтинг, а затем отметка времени.
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