我想把这个模型从
sklearn
.
LogisticRegressionCV(
solver="sag", scoring="neg_log_loss", verbose=0, n_jobs=-1, cv=10
)
拟合结果为
model.score
(在训练集上)0.67并更改。由于无法(或我不知道如何)访问作为模型拟合的一部分执行的交叉验证的结果,因此我在同一个模型上作为单独的交叉验证运行
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]
如果信号被翻转,这似乎在与训练分数相匹配的范围内。
我已经阅读了
issue
关于交叉得分翻转给定得分函数的符号,解决方案似乎是
neg_*
我们引入了一些指标,使这种翻转变得不必要,我正在使用
neg_log_loss
. 这个问题涉及到
mse
但这些论点似乎适用于
log_loss
也。有没有办法
cross_val_score
是否返回其参数中指定的相同度量值?或者这是我应该提交的bug?或者是我的误解和标志的改变仍然是可以期待的
十字记分法
?
我希望这是一个足够具体的问题。
Sklearn
devs将用户重定向到so,以解决那些不明确的bug报告或功能需求的问题。
在注释中为每个请求添加最小的repro代码(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")
有了这段代码,它看起来不再像是度量标准的简单符号翻转。分数输出为0.59,并且
array([-0.70578452, -0.68773683, -0.68627652, -0.69731349, -0.69198876, -0.70089103, -0.69476663, -0.68279466, -0.70066003, -0.68532253])
交叉验证分数。