我试图使用ALS来训练我的数据集以找到潜在因子。我的数据集是隐式评级的。
详细来说,我的数据库包含三列:用户,项目(仓库)和评级(星级数量,隐式评级):
from pyspark.ml.recommendation import ALSlines = spark.read.text("Dataset.csv").rddparts = 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: type object 'ALS' has no attribute 'trainImplicit'
回答:
您试图使用旧版Spark MLLib ALS的语法(它适用于RDD,而非数据框)来操作新版的Spark ML ALS,后者确实没有trainImplicit
属性(文档)。
您可以尝试如下操作:
als = ALS(rank=5, maxIter=5, alpha = 1.0, implicitPrefs=True, seed=0)model = als.fit(ratings)
前提是您的项目位于名为item
的列中,而评级位于rating
列中 – 请查看文档以获取更多详细信息、参数设置选项和示例。