机器学习(ML)模型中有许多移动部件必须连接在一起才能使ML模型成功执行并生成结果。将ML过程的不同部分捆绑在一起的过程称为管道。对于数据科学家来说,管道是一个概括但非常重要的概念。在软件工程中,人们构建管道来开发从源代码到部署的软件。类似地,在ML中,创建了一个管道,以允许数据从其原始格式流向一些有用的信息。它提供了一种构建多ML并行管道系统的机制,以便比较几种ML方法的结果。
管道的每个阶段都馈送从其前一阶段处理的数据; 也就是说,处理单元的输出作为输入提供给下一步骤。正如水在管道中流动一样,数据流过管道。掌握管道概念是创建无差错ML模型的有效方法,管道是AutoML系统的关键要素。
简单的管道
我们将首先导入一个称为Iris的数据集,该数据集已在scikit-learn的样本数据集库中提供(http://scikit-learn.org/stable/auto_examples/datasets/plot_iris_dataset.html)。数据集由四个要素组成,共有150行。我们将在管道中开发以下步骤,以使用Iris数据集训练我们的模型。问题陈述是使用四种不同的特征来预测虹膜数据的种类,如下面的流程图所示:
图片标题
在这个管道中,我们将使用MinMaxScaler方法来缩放输入数据和逻辑回归以预测虹膜的种类。然后将根据准确度度量评估模型:
1.第一步是从scikit导入 - 学习各种库,这些库将提供完成任务的方法。我们必须从sklearn.pipeline添加Pipeline方法,它将为我们提供创建ML管道所需的必要方法:
来自 sklearn.datasets import load_iris
来自 sklearn.preprocessing 导入 MinMaxScaler
来自 sklearn.linear_model import LogisticRegression
来自 sklearn.model_selection import train_test_split
来自 sklearn.pipeline import Pipeline
2.下一步是加载虹膜数据并将其分成训练和测试数据集。在此示例中,我们将使用80%的数据集来训练模型,剩余的20%用于测试模型的准确性。我们可以使用shape函数来查看数据集的维度:
#加载并拆分数据
iris = load_iris()
X_train,X_test,y_train,y_test = train_test_split(iris.data,iris.target,test_size = 0.2,random_state = 42)
X_train.shape
3.以下结果显示训练数据集有4列120行,相当于Iris数据集的80%,并且符合预期:
图片标题
4.接下来,我们打印数据集:
打印(X_train)
上面的代码产生以下输出:
图片标题
5.下一步是创建一个管道。管道对象采用(键,值)对的形式。Key是一个字符串,它具有特定步骤的名称,value是函数或实际方法的名称。在下面的代码片段中,我们将MinMaxScaler()方法命名为minmax,将LogisticRegression()命名为lr:
pipe_lr = Pipeline([(' minmax',MinMaxScaler()),
(' lr',LogisticRegression())])
6.然后,我们将管道对象pipe_lr拟合到训练数据集:
pipe_lr.fit(X_train,y_train)
7.在执行上述代码时,您将获得以下输出,该输出显示已构建的拟合模型的最终结构:
图片标题
8.最后一步是使用score方法在测试数据集上对模型进行评分:
得分 = pipe_lr.score(X_test,y_test)
print(' Logistic回归管道测试精度:%。3f' % 得分)
我们可以从以下结果中注意到,模型的准确度为0.900,即90%:
图片标题
在这个例子中,我们创建了一个包含两个步骤的管道,即minmax scaling和LogisticRegression。当我们在pipe_lr上执行fit方法时,MinMaxScaler对输入数据执行了拟合和变换方法,并将其传递给估计器,估计器是逻辑回归模型。管道中的这些中间步骤称为变换器,最后一步是估计器。