1.流水线介绍
流水线把数据挖掘过程的每个步骤保存在工作流中。
在数据挖掘过程中使用流水线,可以大大降低代码及操作的复杂度,优化流程结构,可以有效减少常见问题的发生。
流水线通过 Pipeline() 来实例化,需要传入的属性是一连串数据挖掘的步骤,其中前几个是转换器,最后一个必须是估计器。
以经典的鸢尾数据为例,通过以下该简单示例的代码,我们来对比感受使用与不使用流水线下代码的差别。
具体流程为:获取数据后,首先进行归一化处理,然后使用近邻算法预测,最后使用交叉检验输出平均准确率。
2.示例
1.导包与获取数据
import numpy as np
from sklearn.pipeline import Pipeline
from sklearn.neighbors import KNeighborsClassifier
from sklearn.preprocessing import MinMaxScaler
from sklearn.model_selection import cross_val_score
from sklearn.datasets import load_iris
# 获取数据
dataset = load_iris()
# print(dataset)
X = dataset.data
y = dataset.target
2.使用流水线前
X_transformed = MinMaxScaler().fit_transform(X)
estimator = KNeighborsClassifier()
scores = cross_val_score(estimator, X_transformed, y, scoring='accuracy')
print("预测的准确率为{0:.1f}%".format(np.mean(scores) * 100))
3.使用流水线后
scaling_pipeline = Pipeline([('scale', MinMaxScaler()),
('predict', KNeighborsClassifier())])
scores = cross_val_score(scaling_pipeline, X, y, scoring='accuracy')
print("预测的准确率为{0:.1f}%".format(np.mean(scores) * 100))
检验准确率也为96.0%,达到了和上边传统写法一样的效果。