问题描述
我尝试将sklearn.metrics.make_scorer
与我编写的auroc_with_maxfpr
函数一起使用,并且通过比较该得分手与max_fpr=1
与默认roc_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 (将#修改为@)