注:本文是人工智能研究网的学习笔记

Pipeline:chaining(链接)estimators

Pipeline可以用于把多个estimators级联合成一个estimator。这么做的原因是考虑了数据处理过程的一系列前后相继的固定流程,比如:feature selection --> normalization --> classification。

在这里,Pipeline提供了两种服务:

  1. Convenience: 你只需要一次fit和predict就可以在数据集上训练一组estimators。
  2. Join parameter selection: 可以把grid search用在pipeline中所有的estimators的参数组合上面。

注意: pineline中除了最后一个之外的所有的estimators都必须是变换器(transformers)(也就是说必须要有一个transform方法)。最后一个estimator可以是任意的类型(transformer, classifier, regresser, etc)。

调用pipeline estimator的fit方法,就等于是轮流调用每一个estimator的fit函数一样,不断地变换输入,然后把结果传递到下一个阶段(step)的estimator。Pipeine对象实例拥有最后一个estimator的所有的方法。也就是说,如果最后一个estimator是一个分类器,则整个pipeline就可以作为一个分类器使用,如果最后一个eatimator是一个聚类器,则整个pipeline就可以作为一个聚类器使用。

Pipeline用法:

Pipeline对象使用(key, value)列表来构建,其中key是一个标识步骤的名称字符串,值是一个estimator对象:

from sklearn.pipeline import Pipeline
from sklearn.svm import SVC
from sklearn.decomposition import PCA # 主成分分析 estimators = [('reduce_dim', PCA()), ('clf', SVC()) ]
pipe = Pipeline(estimators)
print(pipe)
print('-----------')
print(pipe.steps)
print('-----------')
print(pipe.named_steps['clf'])

Pipeline中estimators的参数通过__语法来获取

pipe.set_params(clf__C=10)

上面的方式在网格搜索中尤其好用

from sklearn.model_selection import GridSearchCV
params = dict(reduce_dim__n_components=[2, 5, 10],
clf__C=[0.1, 10, 100])
grid_search = GridSearchCV(pipe, param_grid=params)

单个的阶段(Step)可以使用参数替换,而且非最后阶段(non-final steps)还可以将其设置为None来忽略。

from sklearn.linear_model import LogisticRegression
params = dict(reduce_dim=[None, PCA(5), PCV(10)],
clf=[SVC(), LogisticRegression()],
clf__C=[0.1, 10, 100])
grid_search = GridSearchCV(pipe, param_grid=params)

函数make_pipeline是一个构造pipeline的简短的工具,它可以接受可变数量的estimators并且返回一个pipeline,每个estimator的名称是自动填充的,他不需要指定name。

from sklearn.pipeline import make_pipeline
from sklearn.naive_bayes import MultinomialNB
from sklearn.preprocessing import Binarizer make_pipeline(Binarizer(), MultinomialNB())

FeatureUnion: composite(组合)feature spaces

FeatureUnion把若干个transformer object组合成一个新的estimators。这个新的transformer组合了他们的输出,一个FeatureUnion对象接受一个transformer对象列表。

在训练阶段,每一个transformer都在数据集上独立的训练。在数据变换阶段,多有的训练好的Trandformer可以并行的执行。他们输出的样本特征向量被以end-to-end的方式拼接成为一个更大的特征向量。

在这里,FeatureUnion提供了两种服务:

  1. Convenience: 你只需要调用一次fit和transform就可以在数据集上训练一组estimators。
  2. Joint parameter selection: 可以把grid search用在FeatureUnion中所有的estimators的参数这上面。

FeatureUnion和Pipeline可以组合使用来创建更加复杂的模型。

注意:FeatureUnion无法检查两个transformers是否产生了相同的特征输出,它仅仅产生了一个原来互相分离的特征向量的集合。确保其产生不一样的特征输出是调用者的事情。

用法:

FeatureUnion对象实例使用(key, value)构成的list来构造,key是你自己起的transformation的名称,value是一个estimator对象。

from sklearn.pipeline import FeatureUnion
from sklearn.decomposition import PCA
from sklearn.decomposition import KernelPCA
estimators = [('linear_pca', PCA()), ('kernel_pca', KernelPCA())]
combined = FeatureUnion(estimators)
combined

与pipeline类似,feature unions也有一个比较简单地构造方法make_union,不需要显式的给出name。

Pipeline和FeatureUnion的更多相关文章

  1. sklearn 中的 Pipeline 机制 和FeatureUnion

    一.pipeline的用法 pipeline可以用于把多个estimators级联成一个estimator,这么 做的原因是考虑了数据处理过程中一系列前后相继的固定流程,比如feature selec ...

  2. sklearn中pipeline的用法和FeatureUnion

    一.pipeline的用法 pipeline可以用于把多个estimators级联成一个estimator,这么 做的原因是考虑了数据处理过程中一系列前后相继的固定流程,比如feature selec ...

  3. [Machine Learning with Python] My First Data Preprocessing Pipeline with Titanic Dataset

    The Dataset was acquired from https://www.kaggle.com/c/titanic For data preprocessing, I firstly def ...

  4. [Feature] Final pipeline: custom transformers

    有视频:https://www.youtube.com/watch?v=BFaadIqWlAg 有代码:https://github.com/jem1031/pandas-pipelines-cust ...

  5. [Feature] Build pipeline

    准备数据集 一.数据集 Ref: 6. Dataset loading utilities[各种数据集选项] 第一部分,加载原始iris数据集的数据: 第二部分,先增加一行,再增加一列: #%% pa ...

  6. pipeline和baseline是什么?

    昨天和刚来项目的机器学习小白解释了一边什么baseline 和pipeline,今天在这里总结一下什么是baseline和pipeline. 1.pipeline 1.1 从管道符到pipeline ...

  7. [占位-未完成]scikit-learn一般实例之十一:异构数据源的特征联合

    [占位-未完成]scikit-learn一般实例之十一:异构数据源的特征联合 Datasets can often contain components of that require differe ...

  8. 使用sklearn优雅地进行数据挖掘【转】

    目录 1 使用sklearn进行数据挖掘 1.1 数据挖掘的步骤 1.2 数据初貌 1.3 关键技术2 并行处理 2.1 整体并行处理 2.2 部分并行处理3 流水线处理4 自动化调参5 持久化6 回 ...

  9. 使用sklearn优雅地进行数据挖掘

    目录 1 使用sklearn进行数据挖掘 1.1 数据挖掘的步骤 1.2 数据初貌 1.3 关键技术2 并行处理 2.1 整体并行处理 2.2 部分并行处理3 流水线处理4 自动化调参5 持久化6 回 ...

随机推荐

  1. Struts S2-052漏洞利用之Meterpreter(CVE-2017-9805)

    Struts S2-052漏洞爆出来已经快一周了,大家可能更想知道其危害~鸡肋? 这里就直接给出漏洞利用拿Meterpreter的过程,想了解更多的请参考其他文章,下面是实验演示部分.Struts S ...

  2. 定价(Price)

    传送门 [题目描述] 在市场上有很多商品的定价类似于 999 元.4999 元.8999 元这样.它们和 1000 元.5000 元和 9000 元并没有什么本质区别,但是在心理学上会让人感觉便宜很多 ...

  3. 2016.6.1——Min Stack

    Min Stack 本题收获: 1.可以利用两个栈操作. 2.栈的基本操作. 题目: Design a stack that supports push, pop, top, and retrievi ...

  4. 【四校联考】【比赛题解】FJ NOIP 四校联考 2017 Round 7

    此次比赛为厦门一中出题.都是聚劳,不敢恭维. 莫名爆了个0,究其原因,竟然是快读炸了……很狗,很难受. 话不多说,来看看题: [T1] 题意: 样例: PS:1<=h[i]<=100000 ...

  5. 解决eclipse Debug时提示source not found的问题

    解决办法: 选择Change Attached  Source,添加自己的project,clean项目,重启eclipse即可.

  6. Android图片异步加载

    原:http://www.cnblogs.com/angeldevil/archive/2012/09/16/2687174.html 相关:https://github.com/nostra13/A ...

  7. sld一张图

  8. opencv(0)安装与配置

    1.windows下 1.1 exe安装 windows下可以安装opencv的exe版本,已经编译好了,很省事. 到https://opencv.org/releases.html下载需要的open ...

  9. (三)HtmlUnit 实践

    第一节: htmlunit 爬取百度云资源

  10. CVE-2012-0003 Microsoft Windows Media Player ‘winmm.dll’ MIDI文件解析远程代码执行漏洞 分析

    [CNNVD]Microsoft Windows Media Player ‘winmm.dll’ MIDI文件解析远程代码执行漏洞(CNNVD-201201-110)    Microsoft Wi ...