sklearn中的Pipeline

  在将sklearn中的模型持久化时,使用sklearn.pipeline.Pipeline(stepsmemory=None)各个步骤串联起来可以很方便地保存模型。

  例如,首先对数据进行了PCA降维,然后使用logistic regression进行分类,如果不使用pipeline,那么我们将分别保存两部分内容,一部分是PCA模型,一部分是logistic regression模型,稍微有点不方便。(当然,这么做也完全可以,使用Pipeline只是提供个方便罢了)

 

1.Pipeline中的steps

  Pipeline的最后一步是一个“estimator”(sklearn中实现的各种机器学习算法实例,或者实现了estimator必须包含的方法的自定义类实例),之前的每一步都是“transformer”(必须实现fit和transform方法,比如MinMaxScaler、PCA、one-hot)。在Pipeline调用fit方法时,Pipeline中的每一步依次进行fit操作。

 1 import numpy as np
 2 
 3 from sklearn import linear_model, decomposition, datasets
 4 from sklearn.pipeline import Pipeline
 5 from sklearn.model_selection import GridSearchCV
 6 from sklearn.metrics import accuracy_score
 7 from sklearn.externals import joblib
 8 
 9 logistic = linear_model.LogisticRegression()
10 
11 pca = decomposition.PCA()
12 pipe = Pipeline(steps=[('pca', pca), ('logistic', logistic)])
13 
14 digits = datasets.load_digits()
15 X_digits = digits.data
16 y_digits = digits.target
17 
18 # Parameters of pipelines can be set using ‘__’ separated parameter names:
19 params = {
20     'pca__n_components': [20, 40, 64],
21     'logistic__C': np.logspace(-4, 4, 3),
22 }
23 estimator = GridSearchCV(pipe, params)
24 estimator.fit(X_digits, y_digits)
25 
26 # When "estimator" predicts, actually "estimator.best_estimator_" is predicting.
27 print(type(estimator.best_estimator_))
28 
29 y_pred = estimator.predict(X_digits)
30 print(accuracy_score(y_true=y_digits, y_pred=y_pred))
31 
32 # Save model
33 joblib.dump(estimator, 'models/pca_LR.pkl')

 

2.Pipeline中的memory参数

  默认为None,当需要保存Pipeline中间的“transformer”时,才需要用到memory参数。

 

3.参考文献

  Pipelining: chaining a PCA and a logistic regression

  

转载于:https://www.cnblogs.com/wuliytTaotao/p/9329695.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`sklearn.pipeline`是Scikit-learn库的一个模块,用于构建和管理机器学习流水线(pipeline)。机器学习流水线是一种将多个数据处理步骤和机器学习模型串联起来的方式,以便更方便地进行模型训练和预测。 在`sklearn.pipeline`,可以通过`Pipeline`类来定义一个流水线对象。流水线对象由多个步骤组成,每个步骤可以是数据处理操作(如特征预处理、特征选择等)或机器学习模型。每个步骤都可以指定一些参数,以便自定义其行为。 使用流水线可以将不同的数据处理和建模步骤封装在一起,从而实现更高效、更简洁的机器学习工作流程。流水线可以确保在训练和预测时所有步骤按顺序执行,并且可以方便地进行参数调优和交叉验证。 下面是一个简单的示例,展示如何使用`sklearn.pipeline`构建一个简单的流水线: ```python from sklearn.pipeline import Pipeline from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LogisticRegression # 定义流水线的步骤 steps = [ ('scaler', StandardScaler()), # 特征预处理 ('classifier', LogisticRegression()) # 分类器 ] # 创建流水线对象 pipeline = Pipeline(steps) # 使用流水线进行训练和预测 pipeline.fit(X_train, y_train) y_pred = pipeline.predict(X_test) ``` 在上述示例,流水线包含两个步骤:特征预处理(使用`StandardScaler`进行特征缩放)和分类器(使用`LogisticRegression`进行分类)。可以根据实际需求自定义流水线的步骤和参数,并使用流水线进行模型训练和预测。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值