如何解决为什么LogisticRegressionCV的.score与cross_val_score不同?
我正在使用LogisticRegressionCV的.score()
方法来为我的模型得出准确度得分。
我还使用cross_val_score
和相同的简历分组(skf
)得出了准确度分数,希望显示同样的分数。
但是可惜,它们是不同的,我很困惑。
我首先进行了StratifiedKFold:
skf = StratifiedKFold(n_splits = 5,shuffle = True,random_state = 708)
此后,我以skf
作为CV参数的参数实例化了LogisticRegressionCV(),进行拟合并在训练集上评分。
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
]实际上是平均准确性得分,对吗?
不。这里的score
方法是最终分类器的准确性得分(使用正则化强度的最佳值在整个训练集上对其进行了训练)。通过再次在训练集上对其进行评估,您可以获得对未来绩效的乐观估计。
要恢复交叉验证分数,可以使用属性scores_
。即使褶皱相同,如果它们不能完全收敛,由于解算器中的随机性,这些 可能与cross_val_score
略有不同。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。