对航班时长模型流水线进行交叉验证
您刚刚构建的交叉验证模型很简单,只用 km 来预测 duration。
另一个影响航班时长的重要因素是起飞机场。繁忙机场的航班通常需要更久才能起飞。让我们看看把这个预测因子加入后,模型是否会更好!
在本练习中,您将把 org 字段加入模型。不过,由于 org 是类别型变量,在纳入模型前需要做一些额外处理:它必须先被转为索引,然后进行独热编码,最后与 km 一起组装,才能用于回归模型。我们会把这些操作封装进一个流水线(pipeline)。
以下对象已创建:
params—— 一个空的参数网格evaluator—— 一个回归评估器regression—— 一个LinearRegression对象,且labelCol='duration'。
StringIndexer、OneHotEncoder、VectorAssembler 和 CrossValidator 类均已导入。
本练习是课程的一部分
使用 PySpark 进行机器学习
练习说明
- 创建一个字符串索引器。将输入与输出字段分别指定为
org和org_idx。 - 创建一个独热编码器。将输出字段命名为
org_dummy。 - 将
km与org_dummy字段组装为一个名为features的单一字段。 - 使用以下顺序创建流水线:字符串索引器、独热编码器、组装器与线性回归。使用该流水线创建一个交叉验证器。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Create an indexer for the org field
indexer = ____(____, ____)
# Create an one-hot encoder for the indexed org field
onehot = ____(____, ____)
# Assemble the km and one-hot encoded fields
assembler = ____(____, ____)
# Create a pipeline and cross-validator.
pipeline = ____(stages=[____, ____, ____, ____])
cv = ____(estimator=____,
estimatorParamMaps=____,
evaluator=____)