任何关于算法、编程、AI行业知识或博客内容的问题,可以随时扫码关注公众号「图灵的猫」,加入”学习小组“,沙雕博主在线答疑~此外,公众号内还有更多AI、算法、编程和大数据知识分享,以及免费的SSR节点和学习资料。其他平台(知乎/B站)也是同名「图灵的猫」,不要迷路哦~

一个典型的机器学习构建包含若干个过程

  • 1、源数据ETL
  • 2、数据预处理
  • 3、特征选取
  • 4、模型训练与验证

以上四个步骤可以抽象为一个包括多个步骤的流水线式工作,从数据收集开始至输出我们需要的最终结果。因此,对以上多个步骤、进行抽象建模,简化为流水线式工作流程则存在着可行性,对利用spark进行机器学习的用户来说,流水线式机器学习比单个步骤独立建模更加高效、易用。

管道机制在机器学习算法中得以应用的根源在于,参数集在新数据集(比如测试集)上的重复使用

管道机制实现了对全部步骤的流式化封装和管理(streaming workflows with pipelines)。注意:管道机制更像是编程技巧的创新,而非算法的创新。

接下来我们以一个具体的例子来演示sklearn库中强大的Pipeline用法:

1. 加载数据集

from 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。整个流程如下图所示:

参考文章:

Sklearn中的pipeline

机器学习tips:什么是pipeline?相关推荐

  1. 机器学习Tips:关于Scikit-Learn的 10 个小秘密

    作者 | Rebecca Vickery 原文 | 见『阅读原文』 编译 | NewBeeNLP 写在前面 Scikit-learn是使用最广泛的Python机器学习库之一.它有标准化和简单的接口,用 ...

  2. 准确率 召回率_机器学习tips(四):精确率(precision)和召回率(recall)

    精确率(precision)和召回率(recall) 混淆矩阵 True Positive(真正, TP):将正类预测为正类数. True Negative(真负 , TN):将负类预测为负类数. F ...

  3. Tensorflow pipeline是什么?

    参考文章:机器学习tips:什么是pipeline? 参考文章2:初识pipeline 参考文章3:用 Pipeline 将训练集参数重复应用到测试集 参考文章4:Tensorflow高效流水线Pip ...

  4. 基于Kubernetes 的机器学习工作流

    https://www.toutiao.com/a6642101619120931335/ 2019-01-03 18:00:00 介绍 Pipeline是Kubeflow社区最近开源的一个端到端工作 ...

  5. iris流程图_如何搭建一个简单的机器学习流水线?

    阅读此分步教程,学会通过导入scikit-learn包来搭建一个简单的机器学习流水线(pipeline) 一个机器学习模型中,有很多可移动的组件需要被组合在一起,模型才能被执行并成功的得到结果.把机器 ...

  6. 基于 WeDataSphere Prophecis 与 KubeSphere 构建云原生机器学习平台

    KubeSphere 开源社区的小伙伴们,大家好.我是微众银行大数据平台的工程师周可,接下来给大家分享的是基于 WeDataSphere 和 KubeSphere 这两个开源社区的产品去构建一个云原生 ...

  7. sklearn之pipeline:pipeline函数/make_pipeline函数的简介及其区别联系、使用技巧、案例应用之详细攻略

    sklearn之pipeline:pipeline函数/make_pipeline函数的简介及其区别联系.使用技巧.案例应用之详细攻略 目录 sklearn.pipeline函数简介 1.Why pi ...

  8. 大数据Spark实战第七集 机器学习和数据处理

    机器学习是什么: 机器学习与机器学习工作流 在开始本课时的学习之前,我们先来讲解上个课时的思考题:成环的路径会使消息一直传递下去,所以需要在发送消息时对消息最初出发的顶点和当前顶点进行校验. 下面我们 ...

  9. 吴恩达《机器学习》课程总结

    机器学习课程总结 一.有监督学习(Supervised learning) 1. 线性回归(Linear regression) 2. 逻辑回归(Logistic regression) 3. 神经网 ...

  10. Azure机器学习——Azure机器学习介绍

    Azure机器学习介绍 一.什么是Azure机器学习? 二.Azure 机器学习的几个重要概念 工作区(Workspace) 数据存储(Datastore) 计算目标(Compute Targets) ...

最新文章

  1. jenkins blue ocean 与 pipeline
  2. python mysqldb安装_Flask干货:访问数据库——Python数据库框架MySQLPython
  3. ListableBeanFactory接口
  4. 数据结构期末复习之交换排序
  5. ASP.NET 2.0中将 GridView 导出到 Excel 文件中 (转)
  6. mysql中有time吗_mysql中 datatime与timestamp的区别说明
  7. hdu-5645 DZY Loves Balls(水题)
  8. GooFlow .net 工作流程图 jquery 流程 mvc
  9. 电驴搜索服务器正在连接,电驴连接不上服务器导致无法搜索解决的方法介绍
  10. @Transaction注解详解
  11. 服务器如何释放虚拟内存,服务器如何释放虚拟内存
  12. 《微观经济学》 第九章(二)
  13. 高分子物理名词解释归纳
  14. vue样式中背景图片路径_vue-cli3.0全局less样式中该如何正确设置背景图片的路径?...
  15. 微信小程序 上传图片
  16. vue中的百度地图的搜索定位功能
  17. 线上分享丨自治时代DBA的技能库:SQL和PL/SQL的深度编程(附上期PPT和视频)-云和恩墨大讲堂201905...
  18. ivew的Table中使用render添加图片poptip冒泡方法
  19. 弘瑞3D打印:做更适合工业应用的3D打印机
  20. 从AFN错误码中获取错误code和信息

热门文章

  1. PHP $_SERVER详解
  2. 日常邮件用语(一)网摘学习
  3. 设置仿真器H-JTAG ARM仿真器和MDK 联调设置
  4. Eclipse 右键打开文件夹之插件--easy explorer
  5. 一个简单的 javascript 中的正则表达式例子
  6. Linux下2号进程的kthreadd--Linux进程的管理与调度(七)
  7. css3兼容IE8的方案 各个ie的hack
  8. 利用Linux系统生成随机密码的8种方法
  9. 17秋 SDN课程 第五次上机作业
  10. Xcode Developer Tools