gpt4 book ai didi

python - 与 ROC 交叉验证?

转载 作者:行者123 更新时间:2023-11-30 09:53:10 25 4
gpt4 key购买 nike

我使用代码运行交叉验证,返回 ROC 分数。

rf = RandomForestClassifier(n_estimators=1000,oob_score=True,class_weight  = 'balanced') 
scores = cross_val_score ( rf, X,np.ravel(y), cv=10, scoring='roc_auc')

如何根据

返回 ROC
roc_auc_score(y_test,results.predict(X_test))  

而不是

roc_auc_score(y_test,results.predict_proba(X_test))  

最佳答案

ROC AUC 仅在您可以对预测进行排序时才有用。使用 .predict() 只会给出每个样本最可能的类别,因此您将无法进行排名排序。

在下面的示例中,我在随机生成的数据集上拟合了随机森林,并在保留的样本上对其进行了测试。蓝线显示使用 .predict_proba() 完成的正确 ROC 曲线,而绿线显示使用 .predict() 完成的退化曲线,其中它只真正知道一个截止点.

from sklearn.datasets import make_classification
from sklearn.metrics import roc_curve
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split

rf = RandomForestClassifier()

data, target = make_classification(n_samples=4000, n_features=2, n_redundant=0, flip_y=0.4)
train, test, train_t, test_t = train_test_split(data, target, train_size=0.9)

rf.fit(train, train_t)

plt.plot(*roc_curve(test_t, rf.predict_proba(test)[:,1])[:2])
plt.plot(*roc_curve(test_t, rf.predict(test))[:2])
plt.show()

enter image description here

编辑:虽然没有什么可以阻止您在 .predict() 上计算 roc_auc_score(),但上述要点是这并不是一个真正有用的测量方法。

In [5]: roc_auc_score(test_t, rf.predict_proba(test)[:,1]), roc_auc_score(test_t, rf.predict(test))
Out[5]: (0.75502749115010925, 0.70238005573548234)

关于python - 与 ROC 交叉验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41006322/

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