gpt4 book ai didi

python - 得分为 ='roc_auc' 的 cross_val_score 和 roc_auc_score 有什么区别?

转载 作者:太空狗 更新时间:2023-10-29 18:03:43 29 4
gpt4 key购买 nike

我对 cross_val_score 评分指标“roc_auc”和我可以直接导入和调用的 roc_auc_score 之间的区别感到困惑。

文档 ( http://scikit-learn.org/stable/modules/model_evaluation.html#scoring-parameter ) 表明指定 scoring='roc_auc' 将使用 sklearn.metrics.roc_auc_score。但是,当我使用 scoring='roc_auc' 实现 GridSearchCV 或 cross_val_score 时,我收到的数字与直接调用 roc_auc_score 时截然不同。

这是我的代码,用于帮助演示我所看到的内容:

# score the model using cross_val_score

rf = RandomForestClassifier(n_estimators=150,
min_samples_leaf=4,
min_samples_split=3,
n_jobs=-1)

scores = cross_val_score(rf, X, y, cv=3, scoring='roc_auc')

print scores
array([ 0.9649023 , 0.96242235, 0.9503313 ])

# do a train_test_split, fit the model, and score with roc_auc_score

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)
rf.fit(X_train, y_train)

print roc_auc_score(y_test, rf.predict(X_test))
0.84634039111363313 # quite a bit different than the scores above!

我觉得我在这里遗漏了一些非常简单的东西——很可能是我在如何实现/解释其中一个评分指标方面的错误。

谁能阐明这两个评分指标之间存在差异的原因?

最佳答案

这是因为您提供了预测的 y 而不是 roc_auc_score 中的概率。此函数采用分数,而不是分类标签。尝试这样做:

print roc_auc_score(y_test, rf.predict_proba(X_test)[:,1])

它应该给出与之前来自 cross_val_score 的结果相似的结果。 Refer to this post for more info .

关于python - 得分为 ='roc_auc' 的 cross_val_score 和 roc_auc_score 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33642158/

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