【问题标题】:Scikit Learn Pipeline: Calling .fit() and .score() vs cross_val_score()Scikit 学习管道:调用 .fit() 和 .score() 与 cross_val_score()
【发布时间】: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


    【解决方案1】:

    在使用 cross_val_score() 之前我们必须调用 example_pipe.fit() 吗?

    如果你去Scikit-Learn Documentation,你会找到答案:

    cross_val_score首先适合你的example_pipe,然后得到交叉验证的分数。

    【讨论】:

      猜你喜欢
      • 2019-11-12
      • 2021-05-08
      • 2020-07-11
      • 2020-01-01
      • 2016-12-11
      • 2019-12-03
      • 1970-01-01
      • 2013-07-28
      • 2020-12-10
      相关资源
      最近更新 更多