目录
1、首先,我们构建一个由步骤列表组成的管道对象。
2、向任何其他scikit-learn估计器一样来拟合这个管道
3、调用pipe.score
我们来看下如何使用Pipeline类来表示在使用MinMaxScaler缩放数据后,再训练一个SVM的工作流程(暂时不用网格搜索):
1、首先,我们构建一个由步骤列表组成的管道对象。
每个步骤都是一个元祖,其中包含一个名称(选定的任意字符)和一个估计器的示例:
from sklearn.pipeline import Pipeline
pipe=Pipeline([('scaler',MinMaxScaler()),('svm',SVC())])
这里我们创建了两个步骤:1、‘scaler’,是MinMaxScaler的实例;2、‘svm’,是SVC的实例。
2、向任何其他scikit-learn估计器一样来拟合这个管道
pipe.fit(X_train,y_train)
这里pipe.fit首先对第一个步骤(缩放器)调用fit,然后使用该缩放器对训练数据进行变换,最后用缩放后的数据来拟合SVM
3、调用pipe.score
这一步可以在测试数据上进行评估:
print('在测试集的精度:{:.4f}'.format(pipe.score(X_test,y_test)))
如果对管道调用score方法,则首先使用缩放器对测试数据进行变换,然后利用缩放后的测试数据对SVM调用score方法。
可以看到,这个结果与手动进行数据变换是相同的。利用管道,我们减少了“预处理+分类”过程所需要的代码量。
但是,使用管道的主要有点在于,现在我们可以在cross_val_score火GridSearchCV中使用这个估计器。