У меня есть рейтинг данных как
ratings.show(10)
+----+------+----+
|item|rating|user|
+----+------+----+
| 0| 290.0| 0|
| 1| 112.0| 1|
| 2| 87.8| 2|
| 3| 69.7| 3|
| 4| 65.7| 4|
| 5| 62.0| 5|
| 6| 61.6| 6|
| 7| 60.7| 7|
| 8| 57.7| 8|
| 9| 56.2| 9|
+----+------+----+
only showing top 10 rows
Обратите внимание, что рейтинг неявный .
Я применил ALS алгоритм для совместной фильтрации в порядкесоздать свою модель.
(training, test) = ratings.randomSplit([0.8, 0.2])
als = ALS(rank=5, maxIter=5, alpha = 1.0,
implicitPrefs=True, seed=0)
model = als.fit(training)
После обучения я хотел бы делать прогнозы, используя model.transform .
predicitons = model.transform(test)
Но прогнозирование - это NaN, как показано ниже:
+----+------+----+----------+
|item|rating|user|prediction|
+----+------+----+----------+
| 897| 6.8| 897| NaN|
| 137| 18.6| 137| NaN|
| 255| 14.0| 255| NaN|
| 481| 9.6| 481| NaN|
| 133| 18.7| 133| NaN|
| 513| 9.3| 513| NaN|
| 633| 8.3| 633| NaN|
| 673| 8.0| 673| NaN|
| 593| 8.6| 593| NaN|
| 108| 20.7| 108| NaN|
+----+------+----+----------+