开始使用免费开始使用

在流水线中使用自定义函数转换器

您得知传感器在肥胖个体上的表现可能较差。之前您用权重处理过这个问题,但现在您认为这些信息也可用于特征工程,因此决定用一个指示变量(是否肥胖)来替换个体记录的体重。您希望通过流水线来实现这一点。环境中已提供 numpy(别名为 np)、RandomForestClassifier()FunctionTransformer()GridSearchCV()

本练习是课程的一部分

用 Python 设计机器学习工作流

查看课程

练习说明

  • 定义一个自定义特征提取器。该函数应输出其输入的已修改副本。
  • 将第 1 列中的每个值替换为一个指示变量:当该值高于"列均值的某个倍数"这一阈值时取 1,否则取 0。
  • 将上述特征提取器转换为一个转换器,并与随机森林分类器一起放入流水线中。
  • 使用网格搜索交叉验证,在特征提取器中的乘法常数 multiplier 上尝试取值 1、2 和 3。

交互式实操练习

通过完成这段示例代码来试试这个练习。

# Define a feature extractor to flag very large values
def more_than_average(X, multiplier=1.0):
  Z = ____
  Z[:,1] = ____ > multiplier*np.mean(Z[:,1])
  return Z

# Convert your function so that it can be used in a pipeline
pipe = Pipeline([
  ('ft', ____(____)),
  ('clf', RandomForestClassifier(random_state=2))])

# Optimize the parameter multiplier using GridSearchCV
params = ____
grid_search = GridSearchCV(pipe, param_grid=params)
编辑并运行代码