如何将roc_auc_score和max_fpr参数用作cross_val_score评分函数?

问题描述

我尝试将sklearn.metrics.make_scorer与我编写的auroc_with_maxfpr函数一起使用,并且通过比较该得分手与max_fpr=1roc_auc得分手的结果进行了健全性检查确保它能正常工作。 (max_fpr在实际用例中将小于1)。但是,两个cross_val_score调用返回的结果非常不同。知道为什么吗?

以下是可重现的示例:

from sklearn.linear_model import LogisticRegression
from sklearn.metrics import make_scorer,roc_auc_score
from sklearn.model_selection import cross_val_score,KFold
import numpy as np

y_true = [0,1,1]
X = np.random.rand(len(y_true),10)
kf = KFold(n_splits=2)
model = LogisticRegression(solver = 'lbfgs')

def auroc_with_maxfpr(y_true,y_score,**kwargs):
    return roc_auc_score(y_true,max_fpr=1)
my_scorer = make_scorer(auroc_with_maxfpr)

scores = cross_val_score(model,X,y_true,cv=kf,scoring=my_scorer)
print(scores)

scores = cross_val_score(model,scoring='roc_auc')
print(scores)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)