gpt4 book ai didi

python - 为什么当我将 GridSearchCV 与 roc_auc 评分一起使用时,grid_search.score(X,y) 和 roc_auc_score(y, y_predict) 的分数不同?

转载 作者:太空狗 更新时间:2023-10-30 01:19:11 26 4
gpt4 key购买 nike

我正在使用分层 10 折交叉验证来寻找模型,该模型从具有最高 auc 的 X(X 有 34 个标签)预测 y(二元结果)。我设置了 GridSearchCV:

log_reg = LogisticRegression()
parameter_grid = {'penalty' : ["l1", "l2"],'C': np.arange(0.1, 3, 0.1),}
cross_validation = StratifiedKFold(n_splits=10,shuffle=True,random_state=100)
grid_search = GridSearchCV(log_reg, param_grid = parameter_grid,scoring='roc_auc',
cv = cross_validation)

然后进行交叉验证:

grid_search.fit(X, y)
y_pr=grid_search.predict(X)

我不明白以下内容:为什么 grid_search.score(X,y)roc_auc_score(y, y_pr) 给出不同的结果(前者是 0.74,后者是 0.63)?为什么这些命令在我的案例中不做同样的事情?

最佳答案

这是由于在 GridSearchCV 中使用时 roc_auc 的初始化不同所致。

查看source code here

roc_auc_scorer = make_scorer(roc_auc_score, greater_is_better=True,
needs_threshold=True)

观察第三个参数needs_threshold。如果为真,它将需要 y_pred 的连续值,例如在 gridsearch 中将根据 log_reg.decision_function() 计算的概率或置信度得分。

当您使用 y_pr 显式调用 roc_auc_score 时,您使用的是 .predict(),它将输出数据的结果预测类标签而不是概率。这应该可以解释差异。

尝试:

y_pr=grid_search.decision_function(X)
roc_auc_score(y, y_pr)

如果结果仍然不同,请使用完整代码和一些示例数据更新问题。

关于python - 为什么当我将 GridSearchCV 与 roc_auc 评分一起使用时,grid_search.score(X,y) 和 roc_auc_score(y, y_predict) 的分数不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49061575/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com