简介

管道机制实现了对全部步骤的流式化封装和管理(streaming workflows with pipelines)。

管道机制(也有人翻译为流水线学习器?这样翻译可能更有利于后面内容的理解)在机器学习算法中得以应用的根源在于,参数集在新数据集(比如测试集)上的重复使用。使用管道机制可以大幅度减少代码量.总的来说这是一个非常实用而有趣的方法

注意:管道机制更像是编程技巧的创新,而非算法的创新。

通常流水线学习器的通常步骤
数据标准化学习器=>特征选取学习器=>执行预测的学习器
除了最后一个学习器之外,所有学习器必须提供transform算法,该方法用于数据转换

常用方法与属性

sklearn官方文档

Parameters

  • 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方法

  • inverse_transform,依次执行各个学习器的inverse_transform方法

  • fit,依次对前n-1个学习器执行fit和transform方法,第n个学习器(最后一个学习器)执行fit方法

  • predict,执行第n个学习器的predict方法
  • score,执行第n个学习器的score方法

  • set_params,设置第n个学习器的参数

  • get_param,获取第n个学习器的参数

例子

一般步骤

  • 首先对数据进行预处理,比如缺失值的处理
  • 数据的标准化
  • 降维
  • 特征选择算法
  • 分类或者预测算法(估计器,estimator)

流程图

加载数据

import pandas as pd
from sklearn.model_selection 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)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.2, random_state=0)

利用Pipline合并算法流程

Pipline


def Examples_SklearnOrg_Pipline(X_train, X_test, y_train, y_test):from sklearn import svmfrom sklearn.feature_selection import SelectKBestfrom sklearn.feature_selection import f_regressionfrom sklearn.pipeline import Pipelinefrom sklearn.preprocessing import StandardScalerfrom sklearn.decomposition import PCAanova_filter = SelectKBest(f_regression, k=5)# clf = svm.LinearSVR(kernel='linear')clf = svm.LinearSVC()anova_svm = Pipeline([('sc', StandardScaler()),('pca', PCA(n_components=2)),('anova', anova_filter), ('svc', clf)])# You can set the parameters using the names issued# For instance, fit using a k of all in the SelectKBest# Because the PCA,we only have 2 features# and a parameter 'C' of the svmanova_svm.set_params(anova__k="all", svc__C=.1).fit(X_train, y_train)# prediction_trian = anova_svm.predict(X_train)# prediction_test = anova_svm.predict( X_test)score_train = anova_svm.score(X_train, y_train)score_test = anova_svm.score(X_test, y_test)# print("prediction_train :", prediction_trian)# print("prediction_test :", prediction_test)print("score_train :", score_train)print("score_test :", score_test)# getting the selected features chosen by anova_filterPri_nameed_steps00 = anova_svm.named_steps['anova'].get_support()print(Pri_nameed_steps00)# Another way to get selected features chosen by anova_filterPri_nameed_steps01 = anova_svm.named_steps.anova.get_support()print(Pri_nameed_steps01)UCI_sc_pca_logisticRe(X_train, X_test, y_train, y_test)
Examples_SklearnOrg_Pipline(X_train, X_test, y_train, y_test)

输出:


score_train : 0.964835164835
score_test : 0.921052631579
[ True  True]
[ True  True]

参考

  • sklearn 中的 Pipeline 机制 - Inside_Zhang
  • << Python 大战机器学习 数据科学家的一个小目标 >> 华校专,王正林 2017.03
  • sklearn:官方网站:http://scikit-learn.org/stable/modules/generated/sklearn.pipeline.Pipeline.html#sklearn.pipeline.Pipeline

sklearn中的Pipline(流水线学习器)相关推荐

  1. sklearn中的XGBClassifier函数学习

    # 常规参数 booster gbtree 树模型做为基分类器(默认) gbliner 线性模型做为基分类器 silent silent=0时,不输出中间过程(默认) silent=1时,输出中间过程 ...

  2. SKlearn中的函数学习总结(持续更新)

    关于SKlearn中的函数学习及关键代码部分,会持续更新 (参考sklearn官方文档) 一:分类.回归 二:降维 三:模型评估与选择 四:数据预处理 五:模型保存 大类 小类 适用问题 实现文档 说 ...

  3. 【Python-ML】SKlearn库集成学习器Boosting

    # -*- coding: utf-8 -*- ''' Created on 2018年1月19日@author: Jason.F @summary: Boosting,无放回抽样,串行训练基学习器, ...

  4. sklearn中的数据预处理方法学习汇总

    文章目录 sklearn中的数据预处理方法学习 一.标准化 Z-score标准化 Z-score标准化学习 Z-score标准化实现 Min-max标准化 MaxAbs标准化 二.非线性转换 映射到均 ...

  5. Python中sklearn中HistGradientBoostingRegressor回归器配置单调约束参数monotonic_cst提高回归模型的抗噪声以及局部扰动的能力

    Python中sklearn中HistGradientBoostingRegressor回归器配置单调约束参数monotonic_cst提高回归模型的抗噪声以及局部扰动的能力 目录

  6. 【Python-ML】SKlearn库集成学习器Bagging

    # -*- coding: utf-8 -*- ''' Created on 2018年1月19日@author: Jason.F @summary: Bagging,通过bootstrap样本构建集 ...

  7. 集成学习voting Classifier在sklearn中的实现

    机器学习的算法有很多,对于每一种机器学习算法,考虑问题的方式都略微有所不同,所以对于同一个问题,不同的算法可能会给出不同的结果,那么在这种情况下,我们选择哪个算法的结果作为最终结果呢?那么此时,我们完 ...

  8. 阅读源码系列:sklearn中train_test_split使用及源码学习

    引言 最近用到了sklearn中的train_test_split,感觉很好用,想来实现也不是特别复杂,于是想着看一下源码,学习一下大佬的写法 使用方法 >>> import num ...

  9. sklearn中一些参数

    转载:http://www.cnblogs.com/chenyaling/p/7826229.html 1.监督学习 1.1.广义线性模型 1.1.1.普通最小二乘法  class sklearn.l ...

最新文章

  1. 那些不回微信的人,都在想什么?
  2. boostrap-table export 导出监听
  3. 启动Mysql时发生的一个关于PID文件错误问题
  4. iOS教程:Core Data数据持久性存储基础教程
  5. Javascript 盲区和 操作实例 笔记
  6. 桌面图标设计里的计算机是灰色的,小技巧教您如何将Windows 10上的桌面图标设置中的回收站为灰色!...
  7. 微软WIP漏洞奖励计划新增基于攻击场景的奖励类别,最高$10万
  8. 腾讯九次面试C++,如今面试题了如指掌
  9. html写注册协议页面,html+css编写用户注册协议页
  10. php 生成拼音缩写,php 输入汉字自动带出拼音和英文
  11. 创业公司期权如何运作
  12. 当爱情遇见钱:找有钱的男人能得到啥
  13. mac使用Simulator打开IOS模拟器(不使用Xcode打开IOS模拟器)
  14. Console.read()、Console.readline()、Console.readkey()和Console.Write、Console.Writeline()的意思
  15. KCP协议:从TCP到UDP家族QUIC/KCP/ENET
  16. When allowCredentials is true, allowedOrigins cannot contain the specia 跨域 网关跨域
  17. 微信小程序商城搭建二手交易网站购物+后台管理系统|前后分离VUE.js
  18. 【《Hacker与画家》读厚】第一章 为什么书呆子不受欢迎——Paul眼里的学校 痛苦的根源
  19. 电子货架标签——系统结构
  20. Labview视觉一键尺寸测量仪,多产品,多尺寸,快速编辑, 测量,导出结果

热门文章

  1. MQTT 5.0 新特性(三)| 有效载荷标识与内容类型
  2. 开工的欲望 | AI Studio上线新功能,用你的模型生成在线预测服务
  3. 探索 YOLO v3 实现细节 - 第6篇 预测 (完结)
  4. entity、model和domain三者区别
  5. 产品研究分析--王者荣耀的那些套路
  6. java常用弹出式对话框
  7. 代码优化 5 大原则,第一条就是别优化了!!!
  8. 老板:kill -9的原理都不知道就敢到线上执行,明天不用来了!
  9. 框架:初识Mybatis
  10. 【Linux - mysql】linux下mysql报Failed to restart mysqld.service: Unit not found