我一直在Spark的MLLib中使用Implicit Collaborative Filtering ALS算法。
我的数据采用以下格式(第一列是用户,第二列是商品,第三列是购买的隐含):
user_10, item_200, 1
问题是我在使用代码时,是否需要使用Rating类,它需要以下格式的输入:
Rating, (int(self.user), int(self.product), float(self.rating))
因此,当我尝试创建模型时,我收到一个错误,因为我无法将User和Item的字符串转换为int。是否有另一种选择可以避免使用Ratings类或修改,因此不需要int?
from pyspark.mllib.recommendation import ALS, MatrixFactorizationModel, Rating
data = sc.textFile("test.csv")
ratings = data.map(lambda l: l.split(','))\
.map(lambda l: Rating(l[0], l[1], float(l[2])))
# Build the recommendation model using Alternating Least Squares
rank = 10
numIterations = 10
alpha = 0.01
model = ALS.trainImplicit(ratings, rank, numIterations, alpha)
答案 0 :(得分:0)
评级需要一个int,所以我只想将用户和项目转换为整数。在创建评级时进行一些转换,它应该有效。