scikit learn工具箱pipeline模块:串联方法

本文介绍了scikit learn的pipeline模块,用于构建串联的机器学习流程,包括PCA和SVM的组合应用。通过pipeline,可以直接调用fit和predict方法,并结合grid search进行参数选择。文中给出了一个PCA+SVM的例子,展示了如何通过调整PCA的特征数量找到最佳分类效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

scikit learn工具箱pipeline模块:串联方法

pipeline模块

scikit learn工具箱的pipeline模块提供了将算法模型串联/并联的工具,多个estimator并联起来用于模型结果比较,或者将多个estamitors级联成一个estamitor,比如将特征提取、归一化、分类组织在一起,形成一个典型的机器学习问题工作流。

使用Pipeline的优点在于:

1.直接调用fit和predict方法来对pipeline中的所有算法模型进行训练和预测。

2.可以结合grid search对整个pipeline上estimator的参数进行选择.

3.安全。pipeline可以有效控制transformer和predictor上训练数据的一致性,防止交叉验证时测试数据泄漏给训练好的模型。

scikit learn的pipeline模块提供了以下函数:

  • pipeline.FeatureUnion(transformer_list[, …]) 并联拼接多个transformer的结果用于模型比较
  • pipeline.Pipeline(steps[, memory]) 串联连接多个estimator,中间的模型可以是transformer,也可以是estimator,但最后一个必须是estimator.
  • pipeline.make_pipeline(*steps, **kwargs) 根据给定的estimator列表构造串联Pipeline
  • pipeline.make_union(*transformers, **kwargs) 根据给定的transformer构造并联FeatureUnion.

可以看出,上面函数中,Pipeline()和make_pipeline()都是用于构造串联Pipeline的,FeatureUnion()和make_union() 则是构造并联FeatureUnion的。

串联Pipeline的使用

直接加载sklearn工具箱的pipeline方法的Pipeline函数,例如:

from sklearn.pipeline import Pipeline
from sklearn.naive_bayes import GaussianNB
from sklearn.preprocessing import StandardScaler
...
Pipeline(memory=None,
         steps=[('standardscaler',
                 StandardScaler(copy=True, with_mean=True, with_std=True)),
                ('gaussiannb',
                 GaussianNB(priors=None, var_smoothing=1e-09))])
   

Pipeline函数中:

steps 是一个由(key, value)对构建的列表,其中key是包含要给予此步骤的名称的字符串,value是estimator名称。

memory 是可选参数,可以设置为None或者字符串,这里memory参数应该符合joblib的Meory模块接口,这样做可以将模型训练的结果保存到磁盘上,避免重复计算。Memory适合复杂的输入、输出,特别是在non-hashable的数据和大型数组这样的输入输出上。

或者用make_pipeline函数, 上面的代码可以写为:

from sklearn.naive_bayes import GaussianNB
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import make_pipeline

make_pipeline(StandardScaler(), GaussianNB())
           

在pipeline 中的estimator参数可以通过.steps属性查看。

例1 :pca+svm

以经典的手写数字识别数据为例, 首先用pca方法得到几个最显著的特征,之后用SVM做分类。

from sklearn import svm
from sklearn.datasets import load_digits
from sklearn.decomposition import PCA
from sklearn.pipeline import make_pipeline
from sklearn
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值