码迷,mamicode.com
首页 > 编程语言 > 详细

Python机器学习:6.1 通过管道创建工作流

时间:2018-03-12 13:36:18      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:post   技巧   nts   sklearn   python   取值   数据   str   form   

当我们应用不同的预处理技巧时,比如对特征标准化、对数据主成分分析,我们都需要重复利用某些参数,比如对训练集标准化后还要对测试集进行标准化(二者必须使用相同的参数)。

本节,你会学到一个非常有用的工具:管道(pipeline),这里的管道不是Linux中的管道,而是sklearn中的Pipeline类,二者做的事情差不多。

读取Breast Cancer Wisconsin数据集

本章,我们要用到一个新的二分类数据集 Breast Cancer Wisconsin,它包含569个样本。每一条数据前两列是唯一的ID和相应的类别值(M=恶性肿瘤,B=良性肿瘤),第3-32列是实数值的特征。

话不多说,先读取数据集,然后将y转为0,1:

技术分享图片

接着创建训练集和测试集:

技术分享图片

将transformer和Estimator放入同一个管道

前几章说过,很多机器学习算法要求特征取值范围要相同。因此,我们要对BCW数据集每一列做标准化处理,然后才能应用到线性分类器。此外,我们还想将原始的30维度特征压缩的2维度,这个交给PCA来做。

之前我们都是每一步执行一个操作,现在我们学习用管道将 StandardScaler, PCA和LogisticRegression连接起来:

技术分享图片

Pipeline对象接收元组构成的列表作为输入,每个元组第一个值作为变量名,元组第二个元素是sklearn中的transformer或Estimator。

管道中间每一步由sklearn中的transformer构成,最后一步是一个Estimator。我们的例子中,管道包含两个中间步骤,一个StandardScaler和一个PCA,这俩都是transformer,逻辑斯蒂回归分类器是Estimator。

当管道pipe_lr执行fit方法时,首先StandardScaler执行fit和transform方法,然后将转换后的数据输入给PCA,PCA同样执行fit和transform方法,最后将数据输入给LogisticRegression,训练一个LR模型。

对于管道来说,中间有多少个transformer都可以。管道的工作方式可以用下图来展示(一定要注意管道执行fit方法,而transformer要执行fit_transform):

技术分享图片

Python机器学习中文版目录(http://www.aibbt.com/a/20787.html)

转载请注明出处,Python机器学习(http://www.aibbt.com/a/pythonmachinelearning/)

Python机器学习:6.1 通过管道创建工作流

标签:post   技巧   nts   sklearn   python   取值   数据   str   form   

原文地址:https://www.cnblogs.com/aibbt/p/8548495.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!