【问题标题】:Can we use for loop in ParamGridBuilder of pyspark?我们可以在 pyspark 的 ParamGridBuilder 中使用 for 循环吗?
【发布时间】: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()

【问题讨论】:

    标签: python pyspark apache-spark-mllib


    【解决方案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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-08
      • 2021-05-15
      • 2020-09-09
      • 2021-06-13
      • 1970-01-01
      • 1970-01-01
      • 2020-03-26
      相关资源
      最近更新 更多