
算法链与管道
|
239
In[5]:
from sklearn.pipeline import Pipeline
pipe = Pipeline([("scaler", MinMaxScaler()), ("svm", SVC())])
这里我们创建了两个步骤:第一个叫作 "scaler",是 MinMaxScaler 的实例;第二个叫作
"svm",是 SVC 的实例。现在我们可以像任何其他 scikit-learn 估计器一样来拟合这个管道:
In[6]:
pipe.fit(X_train, y_train)
这里 pipe.fit 首先对第一个步骤(缩放器)调用 fit,然后使用该缩放器对训练数据进
行变换,最后用缩放后的数据来拟合
SVM
。要想在测试数据上进行评估,我们只需调用
pipe.score:
In[7]:
print("Test score: {:.2f}".format(pipe.score(X_test, y_test)))
Out[7]:
Test score: 0.95
如果对管道调用
score
方法,则首先使用缩放器对测试数据进行变换,然后利用缩放后
的测试数据对
SVM
调用
score
方法。如你所见,这个结果与我们从本章开头的代码得到
的结果(手动进行数据变换)是相同的。利用管道,我们减少了“预处理
+
分类”过程
所需要的代码量。但是,使用管道的主要优点在于,现在我们可以在
cross_val_score
或
GridSearchCV
中使用这个估计器。
6.3
在网格搜索中使用管道
在网格搜索中使用管道的工作原理与使用任何其他估计器都相同。 ...