您的位置:

sklearnpip:流水线式机器学习

一、sklearnpipeline: 为机器学习流水线带来极大方便

sklearnpipeline 是机器学习流程中一项十分重要的工具。当我们的数据预处理、特征工程以及模型训练等环节形成了一个有序的流程,如果每次都需要手动对数据进行处理,进而再次训练,那将是一件十分麻烦的事情,sklearnpipeline 就是为了解决这个问题而设计的。它可以把数据处理的流程封装在管道里,使数据更为清晰明了,让开发者可以方便的重复利用。

使用 sklearnpipeline 是十分简单的。首先,我们需要做的是确定一个流程,然后依次添加,可以使用 Pipeline 来进行模型搭建,使用 fit_transform() 方法来进行模型训练,pipe实例则可以看做是一个模型。

from sklearn.datasets import load_iris
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.linear_model import LogisticRegression

# 构造iris数据
iris = load_iris()

pipe = make_pipeline(StandardScaler(),
                     PCA(n_components=2),
                     LogisticRegression(random_state=42))
pipe.fit(iris.data, iris.target)

上述代码演示了一个最简单的流水线模型的构建及训练。首先将数据标准化,然后进行特征降维(这里我仅保留了前两个维度),最后使用逻辑回归进行分类预测。这里的关键是将这三个步骤组起来,使之形成整板流水线。

二、sklearn匹配的python版本: 保障sklearnpip的稳定性

与大多数机器学习库相比,sklearn对环境的依赖很少。然而,为了保证其稳定性,我们仍然建议使用与sklearn良好匹配的Python版本。其中,sklearn的v0.23需要使用Python 3.7或更高版本。为了确保符合sklearn的要求,我们需要通过以下代码提示虚拟环境。

# 激活虚拟环境
python -m venv myenv
# 进入环境
source myenv/bin/activate
# 安装指定版本python
conda install python=3.7

上述代码演示了如何在虚拟环境中安装Python指定版本。我们建议在安装的时候尽量保证各种第三方库版本最新,避免版本不匹配所造成的影响。

三、sklearnpip 的高级用法: 自定义转换器和流水线格式化

sklearnpip 的第三个重要特性是它的自定义转换器。虽然sklearn中有很多标准的转换器,但当我们的数据处理需求很特别,标准转换器无法满足时,我们就需要自定义转换器。在sklearnpip中,自定义转换器是与标准转换器类似的 Python 类。

我们可以实现一个自定义的转换器来演示。例如,这个自定义的转换器可以返回一个特征矩阵的对数值。

import numpy as np
from sklearn.base import BaseEstimator, TransformerMixin

# 定义新的转换器
class Log_Transform(BaseEstimator, TransformerMixin):
    
    def __init__(self):
        pass
    
    def transform(self, X):
        return np.log(X)
    
    def fit(self, X):
        return self

在上面的例子中,我们定义了一个新的自定义转换器,它接受数值列并返回对数值列。我们可以使用这个新的转换器来修改 sklearnpip 的默认行为(例如规范化、PCA、逻辑回归等)。以下示例演示如何将 Log_Transform 加入 sklearnpip 的标准流水线中。

pipe = Pipeline([
        ('log_transformer', Log_Transform()),
        ('std_scaler', StandardScaler()),
        ('pca', PCA(n_components=2)),
        ('model', LogisticRegression(random_state=42))
    ])

pipe.fit(iris.data, iris.target)

当我们执行逻辑回归的时候,数据会首先经过 Log_Transform 转换器进行对数值的转换,然后进行标准化,最后进行 PCA 和逻辑回归操作。

四、总结

sklearnpip 是机器学习流程式开发的重要工具, 它是sklearn中一个非常方便的流水线工具,可以将数据处理的流程封装在管道里,使数据更为清晰明了,方便重复利用,帮助我们快速构建机器学习项目的流水线。通过本文的介绍,相信大家对 sklearnpip 在机器学习中的应用以及其各项优秀特性会有更深入的了解。