4

嗨,

我是 Spark 的新手,我正在尝试使用 ML 推荐。

我的代码

df = sqlContext.createDataFrame(
[(0, 0, 4.0), (0, 1, 2.0), (1, 1, 3.0), (1, 2, 4.0), (2, 1, 1.0), (2, 2, 5.0)],
["user", "item", "rating"])

als = ALS(rank=10, maxIter=5)

model = als.fit(df)

model.userFactors.orderBy("id").collect()

如何为所有电影的所有用户获得 2 条推荐?

谢谢你的时间。

4

1 回答 1

5

不能直接使用ml.recommendation.ALSModel. 你可以使用transform方法

users = df.select("user").distinct()
items = df.select("item").distinct()

model.transform(users.join(items))

然后过滤结果,但效率极低。据我所知,最好在mllib.recommendation.ALS这里简单地使用:

from pyspark.mllib.recommendation import ALS, Rating

model = ALS.train(df.rdd.map(lambda r: Rating(*r)), 10, 5)
model.recommendProductsForUsers(2)
于 2016-02-01T16:12:27.790 回答