gpt4 book ai didi

python - 为什么 LogisticRegressionCV 的 .score() 与 cross_val_score 不同?

转载 作者:行者123 更新时间:2023-12-04 01:14:55 27 4
gpt4 key购买 nike

我使用 LogisticRegressionCV 的 .score() 方法为我的模型生成准确度分数。

我还使用 cross_val_score 通过相同的 cv 拆分 (skf) 生成准确度分数,期望出现相同的分数。

但是,唉,它们是不同的,我很困惑。

我首先做了一个 StratifiedKFold:

skf = StratifiedKFold(n_splits = 5,
shuffle = True,
random_state = 708)

之后,我用 skf 实例化了一个 LogisticRegressionCV() 作为 CV 参数的参数,在训练集上进行拟合和评分。

logreg = LogisticRegressionCV(cv=skf, solver='liblinear')

logreg.fit(X_train_sc, y_train)
logreg.score(X_train_sc, y_train)

这给了我 0.849507735583685 的分数,这是默认的准确性。由于这是 LogisticRegressionCV,这个分数实际上是平均准确度分数,对吧?

然后我使用了cross_val_score:

cross_val_score(logreg, X_train_sc, y_train, cv=skf).mean()

这给了我 0.8227814439082044 的平均准确度分数。

我有点困惑为什么分数不同,因为我认为我基本上在做同样的事情。

最佳答案

[.score] is actually the mean accuracy score right?

没有。这里的score方法是最终分类器的准确率得分(在整个训练集上重新训练,使用正则化强度的最优值)。通过再次在训练集上对其进行评估,您将获得对 future 表现的乐观估计。

要恢复交叉验证分数,您可以使用属性 scores_。即使折叠相同,这些也可能cross_val_score 略有不同,这是由于求解器中的随机性,如果它没有完全收敛的话。

关于python - 为什么 LogisticRegressionCV 的 .score() 与 cross_val_score 不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63659143/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com