我使用spark 2.1.0。在下面的代码中我加载了评级数据。每行包含用户,产品和评级。我使用默认的ALS.train()
方法,该方法假设评级是显式的,但它捕获异常如下:
File "/home/ubuntu/Downloads/spark-2.1.0/python/pyspark/mllib/recommendation.py", line 233, in <lambda>
ratings = ratings.map(lambda x: Rating(*x))
TypeError: __new__() takes exactly 4 arguments (2 given)
在文档中,pyspark.mllib.recommendation
模块提供代码为
r1 = (1, 1, 1.0)
r2 = (1, 2, 2.0)
r3 = (2, 1, 2.0)
ratings =sc.parallelize([r1, r2, r3])
model = ALS.trainImplicit(ratings,1, seed=10)
model.predict(2, 2)
但是当我更改代码时效果不佳,错误仍然存在。 代码如下
from pyspark.mllib.recommendation import Rating, ALS
rawData = sc.textFile("/user/hadoop/ratings.dat")
def gx(x):
ratings=[]
for item in x:
q=item.split("::")
ratings.append(Rating(int(q[0]),int(q[1]),float(q[2])))
return ratings
ratings = rawData.map(lambda l:gx(l))
model = ALS.train(ratings, 50, 10, 0.01)
如何在pyspark中使用ALS.train
。