Ошибка декартового произведения по рекомендации ALS - PullRequest
0 голосов
/ 11 декабря 2018

Я пытаюсь показать список рекомендаций к фильмам для пользователя.Модель была обучена, но при попытке показать прогноз я получаю сообщение об ошибке.

als = ALS(maxIter=5, regParam=0.01, userCol="userID", 
itemCol="movieID", ratingCol="rating")
# ratings is a DataFrame of (movieID, rating, userID)
model = als.fit(ratings)
# allMovies is a DataFrame of (movieID, userID)
# it has userID=0 and all distinct movieID
recommendations = model.transform(allMovies)
recommendations.take(20)

При использовании библиотеки from pyspark.ml.recommendation.ALS и при выполнении последней строки я получаю сообщение об ошибке Detected cartesian product for LEFT OUTER join between logical plans.

Почему это происходит?Спасибо!

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

За ответ на мой собственный вопрос.Похоже, вам не следует использовать transform, а метод recommendForUserSubset.

0 голосов
/ 17 декабря 2018

Перед model.transform вы должны определить ALS что-то вроде ALS (input_col = 'что-то вроде входной функции', output_col = прогнозируемый_rating), или вы можете использовать этот способ для работы.

 rank = 10
 numIterations = 100
 model = ALS.train(ratings, rank, numIterations) #where ratings is dataframe
 recommendation = model.predictAll(alMovies).map(lambda r: ((r[0], r[1]), r[2]))

Надеюсь, что этопомогает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...