通俗易懂的解释sklearn.pipeline

sklearn.pipeline的官方文档:

参数说明:

  • steps : 步骤:列表(list)
    被连接的(名称,变换)元组(实现拟合/变换)的列表,按照它们被连接的顺序,最后一个对象是估计器(estimator)。
  • memory:内存参数,Instance of sklearn.external.joblib.Memory or string, optional (default=None)
  • 属性,name_steps:bunch object,具有属性访问权限的字典
    只读属性以用户给定的名称访问任何步骤参数。键是步骤名称,值是步骤参数。或者也可以直接通过”.步骤名称”获取

Funcution:

  • Pipline的方法都是执行各个学习器中对应的方法,如果该学习器没有该方法,会报错
  • 假设该Pipline共有n个学习器
  • transform,依次执行各个学习器的transform方法
  • fit,依次对前n-1个学习器执行fit和transform方法,第n个学习器(最后一个学习器)执行fit方法
  • predict,执行第n个学习器的predict方法
  • score,执行第n个学习器的score方法
  • set_params,设置第n个学习器的参数
  • get_param,获取第n个学习器的参数

构思算法的流程

在Pipeline中的步骤为:

  • 第一步,特征标准化(StandardScaler)
  • 第二步,分类器(Classifier),也是最后一步
  • 中间可加上比如数据降维(PCA)等步骤
  • 完成管道部署后:
    a.用 Pipeline.fit对训练集进行训练: pipe_lr.fit(X_train, y_train)
    b.再直接用 Pipeline.score 对测试集进行预测并评分: pipe_lr.score(X_test, y_test)
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.linear_model import LogisticRegression

from sklearn.pipeline import Pipeline

pipe_lr = Pipeline([('sc', StandardScaler()),
                    ('pca', PCA(n_components=2)),
                    ('clf', LogisticRegression(random_state=1))
                    ])
pipe_lr.fit(X_train, y_train)
print('Test accuracy: %.3f' % pipe_lr.score(X_test, y_test))

                # Test accuracy: 0.947

Pipeline 的工作方式:

当管道 Pipeline执行 pipe_lr.fit(X_train, y_train)时,
首先由StandardScaler在训练集上执行 fit和transform方法,
transformed后的数据又被传递给Pipeline对象的下一步,也即PCA()。
同StandardScaler一样,PCA也是执行fit和transform方法,
最终将转换后的数据传递给 LosigsticRegression,进行训练。
整个流程如下图所示:

通俗易懂的解释sklearn.pipeline_第1张图片

你可能感兴趣的:(机器学习)