我正在使用Python 2.7和Scikit。
我想知道在进行交叉验证时使用管道是否明智。
请考虑以下示例:
#Pipeline
pipe_rf = Pipeline([('pca', PCA(n_components=80)),
('clf',RandomForestClassifier(n_estimators=100))])
pipe_rf.fit(X_train_s,y_train_s)
pred = pipe_rf.predict(X_test)
#CrossValidation
from sklearn import cross_validation
scores = cross_validation.cross_val_score(pipe_rf,
X_train,
y_train,
cv=10,
scoring='f1')
print 'Train score is: %.5f' % scores.mean()
像这样,CV模块将应用PCA步骤10次,这非常消耗且不必要。而且我没有包含任何其他步骤。