详解 Scikit-learn 的 pipeline.make_pipeline函数:构建数据处理管道

  • Post category:Python

SKlearn是Python中非常常用的机器学习库,自带许多机器学习算法和数据处理工具。SKlearn.pipeline是一个非常重要和方便的模块,它允许将许多不同的处理步骤组合成一个管道,将一些特定数据的处理步骤链接在一起。这些处理步骤包括特征提取、变换、标准化、降维、分类器或者回归器等。

make_pipeline是SKlearn.pipeline的一个函数,在管道中进行步骤的创建, 自动估计每个步骤所需的输入数据,做到了快速构建ML流程,方便调试。

make_pipeline的使用方法如下:

from sklearn.pipeline import make_pipeline
Pipeline_class=make_pipeline(Step_class1, Step_class2,....Step_class(n))

参数说明:
* Step_class(n):不同的数据处理步骤,包括预处理、特征提取、分类器或者回归器等。

make_pipeline会自动给每个步骤进行用相应的fit、transform方法和正则化等,代码中可以省略,非常方便。

下面我们分别给出两个实例

实例1: make_pipeline与PCA和KMeans

这个实例介绍了如何用pipeline对PCA和KMeans进行组合。PCA是降维处理,KMeans是聚类算法

from sklearn.decomposition import PCA
from sklearn.cluster import KMeans
from sklearn.pipeline import make_pipeline
from sklearn.datasets import load_iris

# 加载任务数据
iris = load_iris()

# 用PCA提取2个特征
pca = PCA(n_components=2)

# KMeans聚类算法
kmeans = KMeans(n_clusters=3)

# 用Pipeline组合
pipeline = make_pipeline(pca, kmeans)

# 训练模型
pipeline.fit(iris.data)

# 输出结果
labels = pipeline.predict(iris.data)

print(labels)

我们可以看到,上面的代码中,通过make_pipeline函数,首先定义了PCA和KMeans两个模型,然后通过定义pipeline,将其组合在一起。最后训练并预测数据,输出聚类结果。

实例2:make_pipeline与MinMaxScaler和SVM

这个实例介绍了如何用pipeline对数据进行归一化处理,并且在SVM中使用

from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import MinMaxScaler
from sklearn.svm import SVC
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split

# 加载任务数据
data = load_breast_cancer()
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, random_state=0)

# 定义管道
pipeline = make_pipeline(MinMaxScaler(), SVC())

# 训练模型
pipeline.fit(X_train, y_train)

# 预测测试数据
y_pred = pipeline.predict(X_test)

# 输出准确率
print("Accuracy: {:.2f}%".format(pipeline.score(X_test, y_test) * 100))

我们可以看到,上面的代码中,通过make_pipeline函数,首先定义了MinMaxScaler做归一化处理和SVC做分类器。然后用pipeline对其组合在一起。最后训练并预测数据,并且输出准确率。

通过上面两个模型可以看出,make_pipeline的组合功能非常强大,可以对多个模型按照我们的想法进行自由组合,是SKlearn.pipeline模块中非常实用的部分。