Spark ml 中 ALS 的意外关键字参数 'coldStartStrategy'
unexpected keyword argument 'coldStartStrategy' for ALS in Spark ml
我发现了几个 post 用户想知道为什么他们在使用 ALS 时在他们的预测中收到 NaN
值。我 运行 遇到了同样的问题,似乎找到了答案和已实施的解决方案,并在文档中进行了详细讨论:
注意:coldStartStrategy()
上的文档有一个有效的 link,但似乎由于我的问题,该文档已被删除。
我认为这可以解决问题。除了更新到 Spark 2.1.1 之后(在 2.1.0 上没有工作)我继续收到同样的错误:
TypeError: init() 得到了一个意外的关键字参数 'coldStartStrategy'
这里是我尝试使用参数的地方:
full_train, full_test = ugr_df.randomSplit([0.7, 0.3], seed=0L)
als = ALS(rank = rank, maxIter = maxIter, regParam = lmbda,
userCol = "user_id", itemCol="game_id", seed = seed,
ratingCol="rating", coldStartStrategy="drop")
optimized_model = als.fit(full_train)
我正在以这种方式导入 ALS:
from pyspark.ml.recommendation import ALS
当我去掉冷启动参数时,我的代码工作正常。从我在文档中看到的内容来看,我正在正确实施它。
- 是否存在参数无法正常工作的原因?
如果我不打算使用它,我可以安全地执行以下操作以获得相同的效果吗?即以下代码是否与 coldStartStrategy
参数同义?
predictions = optimized_model.transform(full_test)
predictions_drop = predictions.dropna()
然后继续使用predictions_drop
df 进行回归分析。
coldStartStrategy
已在 Spark 2.2 中引入 SPARK-14489,尚未发布:
如果您想使用它,您必须从源代码构建 Spark 或使用开发人员构建。
调用 na.drop
应该与使用 drop
策略具有相同的效果,internally it is implemented as:
case ALSModel.Drop =>
predictions.na.drop("all", Seq($(predictionCol)))
我发现了几个 post 用户想知道为什么他们在使用 ALS 时在他们的预测中收到 NaN
值。我 运行 遇到了同样的问题,似乎找到了答案和已实施的解决方案,并在文档中进行了详细讨论:
注意:coldStartStrategy()
上的文档有一个有效的 link,但似乎由于我的问题,该文档已被删除。
我认为这可以解决问题。除了更新到 Spark 2.1.1 之后(在 2.1.0 上没有工作)我继续收到同样的错误:
TypeError: init() 得到了一个意外的关键字参数 'coldStartStrategy'
这里是我尝试使用参数的地方:
full_train, full_test = ugr_df.randomSplit([0.7, 0.3], seed=0L)
als = ALS(rank = rank, maxIter = maxIter, regParam = lmbda,
userCol = "user_id", itemCol="game_id", seed = seed,
ratingCol="rating", coldStartStrategy="drop")
optimized_model = als.fit(full_train)
我正在以这种方式导入 ALS:
from pyspark.ml.recommendation import ALS
当我去掉冷启动参数时,我的代码工作正常。从我在文档中看到的内容来看,我正在正确实施它。
- 是否存在参数无法正常工作的原因?
如果我不打算使用它,我可以安全地执行以下操作以获得相同的效果吗?即以下代码是否与
coldStartStrategy
参数同义?predictions = optimized_model.transform(full_test) predictions_drop = predictions.dropna()
然后继续使用predictions_drop
df 进行回归分析。
coldStartStrategy
已在 Spark 2.2 中引入 SPARK-14489,尚未发布:
如果您想使用它,您必须从源代码构建 Spark 或使用开发人员构建。
调用 na.drop
应该与使用 drop
策略具有相同的效果,internally it is implemented as:
case ALSModel.Drop =>
predictions.na.drop("all", Seq($(predictionCol)))