开始使用免费开始使用

构建参数网格

接下来,您需要创建一个取值网格,用于搜索最优超参数。子模块 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()
编辑并运行代码