在Spark的CrossValidator中将正确的labelCol传递为超参数

问题描述

我正在Spark(Pyspark)中构建推荐系统,并且我有多个隐式评级列,我希望将其用作超参数。

我有以下内容

als = ALS(maxIter=20,regParam=0.01,userCol='customer',itemCol='itemID',coldStartStrategy='drop',implicitPrefs=True)
pipeline = Pipeline(stages=[als])
paramGrid = ParamGridBuilder()\
           .addGrid(als.rank,[10,20,25,30])\
           .addGrid(als.alpha,list_alpha_values)\
           .addGrid(als.ratingCol,list_ratings_cols)\
           .build()

evaluator = RegressionEvaluator(metricName='rmse',labelCol= **???**,predictionCol='prediction')

crossval=CrossValidator(pipeline,paramGrid,evaluator)

要点是,如何正确地将正确的评级列传递给评估者?我可以将其添加到paramgrid中,但是当不需要它时,它将“交叉列”,或者可以将其全部放在列的for循环中。这两种情况都会使我损失性能/时间。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...