【发布时间】:2021-10-12 02:57:45
【问题描述】:
假设我们有以下管道:
example_pipe = Pipeline(steps=[
('scaler', StandardScaler()),
('selector', SelectKBest(k=len(X.columns)-5)),
('classifier', KNeighborsClassifier())
])
现在我们想通过以下方式获得管道的性能:
# 1)
cross_val_score(example_pipe, X, y, cv=5, scoring='accuracy').mean()
# 2)
example_pipe.fit(X_train, y_train)
example_pipe.score(X_test, y_test)
就我们获得的分数而言,第一个与第二个有何不同(当然除了它进行交叉验证)?在使用cross_val_score()之前,我们是否必须调用example_pipe.fit()。
我在文档中找到了以下方法,但有点令人困惑,因为我认为调用.fit() 已经意味着调用.transform()。
fit(X[, y]) --> 拟合模型
fit_predict(X[, y]) --> 应用管道中最后一步的 fit_predict 转换后。
fit_transform(X[, y]) --> 拟合模型并用最终变换 估计器
score(X[, y, sample_weight]) --> 应用变换,并使用 最终估计器
【问题讨论】:
标签: python scikit-learn pipeline