构建参数网格
接下来,您需要创建一个取值网格,用于搜索最优超参数。子模块 pyspark.ml.tuning 提供了一个名为 ParamGridBuilder 的类正是用于此目的(也许您已经注意到一个规律:PySpark 基本为每件事都准备了子模块!)。
您将使用 .addGrid() 和 .build() 方法来创建可用于交叉验证的网格。.addGrid() 方法接收一个模型参数(几道练习前您创建的 Estimator 模型 lr 的属性)以及一组您想尝试的取值列表。
.build() 方法不接收任何参数,它会返回稍后要用到的网格。
本练习是课程的一部分
PySpark 基础
练习说明
- 将子模块
pyspark.ml.tuning以别名tune导入。 - 不带参数调用类构造函数
ParamGridBuilder(),将结果保存为grid。 - 在
grid上调用.addGrid()方法,第一参数为lr.regParam,第二参数为np.arange(0, .1, .01)。第二个调用来自numpy模块(已导入为np),用于创建从 0 到 .1、步长为 .01 的数值列表。用返回结果覆盖grid。 - 再次更新
grid:第二次调用.addGrid(),为lr.elasticNetParam创建仅包含[0, 1]的取值网格。 - 在
grid上调用.build()方法,并用其输出覆盖grid。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Import the tuning submodule
import ____ as ____
# Create the parameter grid
grid = tune.____
# Add the hyperparameter
grid = grid.addGrid(____, np.arange(0, .1, .01))
grid = grid.addGrid(____, ____)
# Build the grid
grid = grid.build()