当前位置: 首页 > 知识库问答 >
问题:

为什么sklearn中的cross_val_score会翻转度量值?

夏昌胤
2023-03-14
LogisticRegressionCV(
        solver="sag", scoring="neg_log_loss", verbose=0, n_jobs=-1, cv=10
    )
cross_val_score(model, X, y, cv=10, scoring="neg_log_loss")
[-0.69517214 -0.69211235 -0.64173978 -0.66429986 -0.77126878 -0.65127196
 -0.66302393 -0.65916281 -0.66893633 -0.67605681]

如果把标志翻转过来,这个范围似乎与训练分数相符。我读过一期文章中关于cross_val_score翻转给定评分函数的符号的讨论,解决方案似乎是引入neg_*度量来使这种翻转不需要,我使用的是neg_log_loss。这个问题讨论MSE,但参数似乎也适用于log_loss。有没有办法让cross_val_score返回与其参数中指定的相同度量?或者这是一个我应该归档的错误?还是我的误会和cross_val_score的符号更改?

我希望这是一个足够具体的问题。sklearn开发人员将用户重定向到SO以获取不是清晰的错误报告或功能要求的问题。

在注释中为每个请求添加最小的再现代码(sklearn v 0.19.1 python 2.7):

from numpy.random import randn, seed
from sklearn.linear_model import LogisticRegressionCV
from sklearn.model_selection import cross_val_score

seed (0)
X = randn(100,2)
y = randn(100)>0
model = LogisticRegressionCV(
    solver="sag", scoring="neg_log_loss", verbose=0, n_jobs=-1, cv=10
)
model.fit(X=X, y=y)
model.score(X,y)

cross_val_score(model, X, y, cv=10, scoring="neg_log_loss")

共有1个答案

谯翔
2023-03-14

注:编辑后与Vivek Kumar和Piccolbo富有成效的评论线程。

您发现了一个bug,该bug在0.20.0版本中得到了修复。

从更改日志中:

使用评分选项返回给定测试数据和标签的分数。

cross_val_score翻转错误丢失度量的结果值,同时保留score度量的符号。从文档中可以看到:

所有记分器对象都遵循较高的返回值优于较低的返回值这一惯例。因此,度量模型和数据之间距离的度量,如metrics.mean_squared_error,可以作为neg_mean_squared_error,返回度量的负值。

 类似资料:
  • 问题内容: 当我的PHP脚本从AJAX POST请求接收数据时,变量将被转义。真正奇怪的是,这仅发生在我的生产服务器上(在Linux上运行PHP 5.2.12),而不在我的本地服务器(在Windows上运行PHP 5.3.1)上发生。 这是AJAX代码: 这有什么原因吗?以及如何解决此问题,使其在两台服务器上均可工作? 编辑:我具有magic_quotes的以下设置: 问题答案: 您可能已在Lin

  • 我试图理解Typescript编译器何时转换代码以使其与我指定的目标ECMAScript版本(ES5或ES3)兼容。 例如,TSC 可以很好地转译 for(),但它不会转译 根据 w3schools 的说法,这是 ES6 的一个功能)。 IE中不支持< code>Number.isInteger() 我能期望什么被转移,什么不会?我最初预计一切都会被转移,这样我就不必跟踪这样的事情,但事实似乎并非

  • 问题内容: 为什么JavaScript会提升变量? 设计师决定实施吊装时的基本原理是什么?还有其他流行的语言可以做到这一点吗? 请提供文档和/或记录的相关链接。 问题答案: 正如Stoyan Stefanov在“ JavaScript模式”一书中解释的那样,提升是JavaScript解释器实现的结果。 JS代码解释分两次进行。在第一遍中,解释器处理变量和函数声明。 第二遍是实际的代码执行步骤。解释

  • 问题内容: 当我的PHP脚本从AJAX POST请求接收数据时,将对变量进行转义。真正奇怪的是,这仅发生在我的生产服务器(在Linux上运行PHP 5.2.12)上,而不在我的本地服务器(在Windows上运行PHP 5.3.1)上发生。 这是AJAX代码: 这有什么原因吗?我应该如何解决这个问题,使其在两台服务器上都能正常工作? 编辑:我对magic_quotes具有以下设置: 问题答案: 您可

  • 问题内容: 简而言之,场景:一个拥有超过1600万条记录[2GB大小]的表。当使用ORDER BY * primary_key *时,SELECT的LIMIT偏移量越高,查询速度就越慢 所以 花费不到 那只订购30条记录,并且无论如何都相同。因此,这不是ORDER BY的开销。 现在,当获取最新的30行时,大约需要180秒。如何优化该简单查询? 问题答案: 通常,较高的偏移量会使查询速度变慢,因为

  • 问题内容: 考虑下面的go代码: : 我不明白的是,为什么taste_fruits的容量为3,直觉上我希望为2,因为这是切片的长度? 而且,如果tasty_fruits的容量为3,那么为什么: 造成: 问题答案: 这行: 创建一个 数组 ,而不是一个切片。即使您仅提供了3个元素,它也有4个元素。输出: 切片: 结果是: 长度:明显2.容量? 的 容量 是…的片的长度和超过所述切片中的[基本]阵列的