11.Pipelines

本教程是ML系列的一部分。 在此步骤中,您将了解如何以及为何使用管道清理建模代码。

What Are Pipelines

管道是保持数据处理和建模代码有序的简单方法。 具体来说,管道捆绑了预处理和建模步骤,因此您可以像使用单个包一样使用整个捆绑包。

许多数据科学家在没有管道的情况下将模型混合在一起,但是管道有一些重要的好处。 其中包括:

  1.      清洁代码:您无需在每个处理步骤中跟踪您的训练(和验证)数据。 在每个处理步骤中计算数据会变得混乱。 使用管道,您无需手动跟踪每个步骤。
  2.      更少的错误:错误应用或忘记预处理步骤的机会较少。
  3.      更容易生产:将模型从原型转换为可大规模部署的设备可能会非常困难。 我们不会在这里讨论许多相关问题,但管道可以提供帮助。
  4.      更多模型测试选项:您将在下一个教程中看到一个示例,其中包含交叉验证。

Examples

我们不再介绍如何加载数据,现在想下一下,你已经有了训练和测试数据。

【1】

import pandas as pd
from sklearn.model_selection import train_test_split

# Read Data
data = pd.read_csv('../input/melb_data.csv')
cols_to_use = ['Rooms', 'Distance', 'Landsize', 'BuildingArea', 'YearBuilt']
X = data[cols_to_use]
y = data.Price
train_X, test_X, train_y, test_y = train_test_split(X, y)

您有一个使用Imputer填充缺失值的建模过程,然后使用RandomForestRegressor进行预测。 这些可以与make_pipeline函数捆绑在一起,如下所示。

【2】

from sklearn.ensemble import RandomForestRegressor
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import Imputer

my_pipeline = make_pipeline(Imputer(), RandomForestRegressor())

您现在可以使用此管道作为融合整体来拟合和预测。

【3】

my_pipeline.fit(train_X, train_y)
predictions = my_pipeline.predict(test_X)

进行比较,这里有一个不使用管道的例子:

【4】

my_imputer = Imputer()
my_model = RandomForestRegressor()

imputed_train_X = my_imputer.fit_transform(train_X)
imputed_test_X = my_imputer.transform(test_X)
my_model.fit(imputed_train_X, train_y)
predictions = my_model.predict(imputed_test_X)

这个特殊的管道只是代码优雅的一个小小改进。 但随着数据处理变得越来越复杂,管道变得越来越有价值。

Understanding Pipelines

大多数scikit-learn对象都是b或模型变形金刚。

变形金刚用于建模前的预处理。 Imputer类(用于填充缺失值)是变形金刚的示例。随着时间的推移,您将学习更多变形金刚,并且您将经常使用多个变形金刚。

模型用于进行预测。在将数据放入模型之前,通常会对数据进行预处理。

您可以根据应用方式判断对象是变形金刚还是模型。安装变形金刚后,使用transform命令应用它。在拟合模型后,将其与predict命令一起应用。您的管道必须从变形金刚步骤开始,并以模型结束。无论如何,这是你想要的。

最终,您将需要应用更多变形金刚并更灵活地组合它们。我们稍后将在高级管道教程中介绍此内容。


Your Turn

获取建模代码并将其转换为使用管道。现在,您需要对管道外的分类变量进行one-hot encoding(即在将数据放入管道之前)。

猜你喜欢

转载自blog.csdn.net/cg129054036/article/details/82502661