khe*_*edi 7 random-forest scikit-learn auc
我的数据中的标签是一个 (N x 1) 向量。负样本的标签值为 0,正样本的标签值为 1(因此,这是一个二元分类问题)。我使用.fitsklearn的功能并在我的训练集上安装了一个随机森林。为了计算测试集的 AUC,我使用metrics.roc_auc_score (test_labels, probabilities). 我正在使用
predict_proba(my_test_set)来获取概率。但是,predict_proba(my_test_set)返回一个 (N_test, 2) 矩阵。我看到很多人使用这个返回矩阵的第二列 ( predict_proba(my_test_set)[:,1]) 并将其提供给metrics.roc_auc_score来计算 AUC,但为什么是第二列?为什么不是第一列 ( predict_proba(my_test_set)[:,0])?
ROC AUC 是通过将真实标签向量与正类的概率预测向量进行比较来计算的。
所有scikit-learn分类器,包括RandomForestClassifier,都会将标签最高的类设置为正类,相应的预测概率将始终位于predict_proba矩阵的第二列。roc_auc_score做同样的假设,并假设具有最高标签的类是正类。因此,两者对正类是什么都有相同的定义,并roc_auc_score期望分类器事先将相应的概率放在第二列中。
这就是为什么你应该总是这样做:
roc_auc_score(y_test, RFC.predict_proba(X_test)[:,1])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7891 次 |
| 最近记录: |