我们可以在 pyspark 的 ParamGridBuilder 中使用 for 循环吗?
Posted
技术标签:
【中文标题】我们可以在 pyspark 的 ParamGridBuilder 中使用 for 循环吗?【英文标题】:Can we use for loop in ParamGridBuilder of pyspark? 【发布时间】:2018-09-11 13:21:10 【问题描述】:下面的代码是在 pyspark 中不带任何循环的情况下将参数添加到 paramGridBuilder 中。
from pyspark.ml.tuning import ParamGridBuilder
paramGrid = ParamGridBuilder()\
.addGrid(lr.regParam, [0.1, 0.01]) \
.addGrid(lr.fitIntercept, [False, True])\
.addGrid(lr.elasticNetParam, [0.0, 0.5, 1.0])\
.build()
我有一本这样的字典
dict = lr.regParam : [0.1,0.01],lr.fitIntercept:[False,True],lr.elasticNetParam:[0.0,0.5,1.0]
我们可以使用循环来构建 ParamgridBuilder 吗?它会起作用吗?
for k,v in dict.items():
paramGrid = ParamGridBuilder().addGrid(k,v).build()
【问题讨论】:
【参考方案1】:你可以使用reduce函数:
from functools import reduce
paramGrid = reduce(
lambda a,b: a.addGrid(*b),
dict.items(),
ParamGridBuilder(),
).build()
或使用 for 循环
paramGrid = ParamGridBuilder()
for k,v in dict.items():
paramGrid = paramGrid.addGrid(k,v)
paramGrid = paramGrid.build()
【讨论】:
以上是关于我们可以在 pyspark 的 ParamGridBuilder 中使用 for 循环吗?的主要内容,如果未能解决你的问题,请参考以下文章
PySpark 无法通过 sparkContext/hiveContext 读取 Hive ORC 事务表?我们可以使用 Pyspark 更新/删除配置单元表数据吗?
我们如何在 pyspark 的不同模块中使用相同的连接数据框用法