我正在尝试使用ALS训练我的数据集以找到潜在因素。我的数据集是隐式评级。
在深度上,我的数据库包括三列用户,项目(存储库)和评级(星数(隐含评级)):
from pyspark.ml.recommendation import ALS
lines = spark.read.text("Dataset.csv").rdd
parts = lines.map(lambda row: row.value.split(","))
ratingsRDD = parts.map(lambda p: Row(userId=int(p[1]),repoId=int(p[2]),repoCount=float(p[3])))
ratings = spark.createDataFrame(ratingsRDD)
model = ALS.trainImplicit(ratings, rank=5,lambda_=0.01, alpha = 1.0, iterations =5)
我收到此错误:
AttributeError:类型对象'ALS'没有属性'trainImplicit'
您正在尝试使用旧的,Spark MLLib ALS(适用于RDD,而不适用于数据帧)的语法与新的Spark ML ALS,它确实没有trainImplicit
属性(docs)。
你应该尝试类似的东西:
als = ALS(rank=5, maxIter=5, alpha = 1.0, implicitPrefs=True, seed=0)
model = als.fit(ratings)
如果您的商品位于名为item
的列中,并且您的评级位于rating
- 请查看docs以获取更多详细信息,参数化选项和示例。