sklearn 中的 Pipeline 机制
from sklearn.pipeline import Pipeline
管道机制在机器学习算法中得以应用的根源在于,参数集在新数据集(比如测试集)上的重复使用。
管道机制实现了对全部步骤的流式化封装和管理(streaming workflows with pipelines)。
注意:管道机制更像是编程技巧的创新,而非算法的创新。
接下来我们以一个具体的例子来演示sklearn库中强大的Pipeline用法:
1. 加载数据集
import pandas as pd
from sklearn.cross_validation import train_test_split
from sklearn.preprocessing import LabelEncoderdf = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/''breast-cancer-wisconsin/wdbc.data', header=None)# Breast Cancer Wisconsin datasetX, y = df.values[:, 2:], df.values[:, 1]# y为字符型标签# 使用LabelEncoder类将其转换为0开始的数值型
encoder = LabelEncoder()
y = encoder.fit_transform(y)>>> encoder.transform(['M', 'B'])array([1, 0])
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.2, random_state=0)
2. 构思算法的流程
可放在Pipeline中的步骤可能有:
- 特征标准化是需要的,可作为第一个环节
- 既然是分类器,classifier也是少不了的,自然是最后一个环节
- 中间可加上比如数据降维(PCA)
- 。。。
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.linear_model import LogisticRegressionfrom sklearn.pipeline import Pipelinepipe_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对象接受二元tuple构成的list,每一个二元 tuple 中的第一个元素为 arbitrary identifier string,我们用以获取(access)Pipeline object 中的 individual elements,二元 tuple 中的第二个元素是 scikit-learn与之相适配的transformer 或者 estimator。
Pipeline([('sc', StandardScaler()), ('pca', PCA(n_components=2)), ('clf', LogisticRegression(random_state=1))])
3. Pipeline执行流程的分析
Pipeline 的中间过程由scikit-learn相适配的转换器(transformer)构成,最后一步是一个estimator。比如上述的代码,StandardScaler和PCA transformer 构成intermediate steps,LogisticRegression 作为最终的estimator。
当我们执行 pipe_lr.fit(X_train, y_train)
时,首先由StandardScaler在训练集上执行 fit和transform方法,transformed后的数据又被传递给Pipeline对象的下一步,也即PCA()。和StandardScaler一样,PCA也是执行fit和transform方法,最终将转换后的数据传递给 LosigsticRegression。整个流程如下图所示:
4. pipeline 与深度神经网络的multi-layers
只不过步骤(step)的概念换成了层(layer)的概念,甚至the last step 和 输出层的含义都是一样的。
只是抛出一个问题,是不是有那么一丢丢的相似性?
sklearn 中的 Pipeline 机制相关推荐
- sklearn中的Pipline(流水线学习器)
简介 管道机制实现了对全部步骤的流式化封装和管理(streaming workflows with pipelines). 管道机制(也有人翻译为流水线学习器?这样翻译可能更有利于后面内容的理解)在机 ...
- Tomcat中容器的pipeline机制
本文主要目的是讲解tomcat中的pipeline机制,涉及部分源码分析 之前我们在前面的文章介绍过,tomcat中Container有4种,分别是Engine,Host,Context,Wrappe ...
- Sklearn中的CV与KFold详解
关于交叉验证,我在之前的文章中已经进行了简单的介绍,而现在我们则通过几个更加详尽的例子.详细的介绍 CV %matplotlib inline import numpy as np from skle ...
- sklearn中一些参数
转载:http://www.cnblogs.com/chenyaling/p/7826229.html 1.监督学习 1.1.广义线性模型 1.1.1.普通最小二乘法 class sklearn.l ...
- sklearn中的正则化
文章目录 L1和L2 L2正则化.岭回归 L1正则化.Lasso回归 弹性网络 提前停止 正则化是处理模拟过拟合最常用的方式之一.本部分我们介绍常见的正则化方法. L1和L2 Lasso回归的一个重要 ...
- ASP.NET Core 中的管道机制
首先,很感谢在上篇文章 C# 管道式编程 中给我有小额捐助和点赞的朋友们,感谢你们的支持与肯定.希望我的每一次分享都能让彼此获得一些收获,当然如果我有些地方叙述的不正确或不当,还请不客气的指出.好了, ...
- sklearn中的逻辑回归
复习一下sklearn中的这些用法 给定一堆数据,并设置一个随机种子,让大家都能复现: import numpy as np import matplotlib.pyplot as pltnp.ran ...
- 这样讲 Netty 中的心跳机制,还有谁不会?
作者:永顺 segmentfault.com/a/1190000006931568 基础 何为心跳 顾名思义, 所谓 心跳, 即在 TCP 长连接中, 客户端和服务器之间定期发送的一种特殊的数据包, ...
- tfidf处理代码_tf idf公式及sklearn中TfidfVectorizer
在文本挖掘预处理之向量化与Hash Trick中我们讲到在文本挖掘的预处理中,向量化之后一般都伴随着TF-IDF的处理,那么什么是TF-IDF,为什么一般我们要加这一步预处理呢?这里就对TF-IDF的 ...
最新文章
- 看linux驱动程序看了几层之后就乱了,找到了linux分区顺序错乱修复方法
- If语句:你们到底想把我放到哪儿?
- 带你了解什么样的信息是陷阱或为勒索病毒在诱骗
- oralce创建用户
- Spring AOP根据JdbcTemplate方法名动态设置数据源
- 26 Java GC算法 垃圾收集器、标记 -清除算法、复制算法、标记-压缩算法、分代收集算法
- Linux命令及文件操作
- zookeeper思维导图
- VS中代码格式及样式的统一处理
- python工资一般多少p-Python里的黄金库,学会了你的工资至少翻一倍
- c语言之fopen参数(r+,w+,a+)
- 分享:一个Java写的教师信息管理系统(windowbuilder)(附码云源码)~~~
- 数据挖掘经典十大算法_ID3算法
- 3D建模游戏动漫模型制作软件都有哪些?最全解析,工具免费领
- 原件常识:以“光”为传媒的光电耦合器
- 谁若97岁死,奈何桥上等三年。
- 架构师素养及从小菜进阶架构(CTO)的书籍【转】
- 【HAN】代码逐句理解二
- 计算机主机电源怎么换,如何更换电脑电源风扇
- 微信小程中wx.requert请求外部数据和.NET Core 发布服务支持https
热门文章
- 怎样才能恢复误删的数据-免费版本
- c++ 可变参数_深入剖析ProE可变扫描特征原理、操作和应用方法
- worker进程和task进程区别_swoole中使用task进程异步的处理耗时任务
- java数组元素的输入_java基础--键盘输入一个数,输出数组中指定元素
- adb命令启动某个action_Android adb shell启动应用程序的方法
- Navicat过期问题的解决
- 并发编程(1): volatile、原子变量、自旋锁和互斥锁
- 深入学习卷积神经网络中卷积层和池化层的意义(转)
- 试验笔记 - Eclipse的.class反编译插件
- pip install rrdtool