Я использую PySpark в Azure Databricks.Я использовал алгоритм ALS библиотеки Sparks MLlib для прогнозирования рейтингов фильмов, который работает успешно.Тем не менее, я пытаюсь добавить фрейм данных, состоящий из моих оценок для 10 случайно выбранных фильмов.Когда я делаю это, я получаю только предсказание рейтинга для фильмов, которые я уже оценил
Я хочу иметь возможность использовать модель для получения рекомендаций на основе их рейтинга.
У меня есть Spark Code, который выполняет следующие задачи:
Импортирует данные (RatingsSmall, MoviesSmall, RatingsLarge, Movies Large)
Объединяет рейтинги с небольшими фильмами, Объединяет рейтинги с большими фильмами
Добавить к двум новым наборам данных вместе
Удалить нерелевантные столбцы Timestamp и Genre
Теперь у меня есть чистая таблица с MovieID, Title (Название фильма), Идентификатор пользователя и рейтинг.Я покажу код с этой точки.Если вы хотите получить код до этого, я могу отправить его тоже.
Надеемся, что вышеизложенное поможет вам разобраться с кодом, который я прикрепил.Я получаю прогнозы только для того рейтинга, который я уже представил.
Я пытался присоединить свой рейтинг к тренировочному набору.Отсюда я хотел бы получить рекомендации или прогнозы для других фильмов в наборе данных.
Моя попытка: импортировать DF с моими собственными рейтингами.Добавил это (UnionAll) к тренировочному набору.Получил прогнозы (но только для фильмов, которые я уже оценил)
код:
#Split dataset
training, test = All_Movies.randomSplit([0.8, 0.2])
from pyspark.ml.recommendation import ALS
from pyspark.ml.evaluation import RegressionEvaluator
#Set up model
ALS = ALS(maxIter=10, regParam=0.01, userCol = "userId",itemCol="movieId", ratingCol="rating", coldStartStrategy="drop")
#Fit model to Training set and attach personal recomendations
model = ALS.fit(training.unionAll(PersonalDF)) #PersonalDF is my rankings
#Get Predictions for Test Set
predictions = model.transform(test).dropna()
#All good up until here.
#Trying to get prediction rankings for my movies
mySampledMovies = model.transform(PersonalDF)
mySampledMovies.registerTempTable("mySampledMovies")
display(sqlContext.sql("select userId, movieId, rating,title, prediction from mySampledMovies"))
Я ожидаю DataFrame, который говорит мой идентификатор пользователя, MovieID, Рейтинг, Прогноз.Для фильмов я не видел, чтобы рейтинг был N / A или Null и Predictions, чтобы иметь значение.
Большое спасибо