用随机森林计算 ROC AUC

Posted

技术标签:

【中文标题】用随机森林计算 ROC AUC【英文标题】:computing ROC AUC with random forest 【发布时间】:2021-06-12 19:12:54 【问题描述】:

我在多类问题中使用随机森林分类器。

rf = RandomForestClassifier(()
rf.fit(train_X, train_y)

然后进行预测:

pred = rf.predict(test_X)

那么我想像这样计算roc_auc_score

roc_value = roc_auc_score(test_y, pred, average='weighted', 
    multi_class='ovr',labels=[0,1,2,3,4])

但这会报错:

numpy.AxisError: axis 1 is out of bounds for array of dimension 1

我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

如果您对 ROC AUC 感兴趣,pred 需要是概率,而不是预测标签。在您的情况下,这是一个多类分类问题,因此pred 需要是形状为(n_samples, n_classes) 的矩阵。要获得它,您只需要使用predict_proba 而不是predict

pred = rf.predict_proba(test_X)

【讨论】:

以上是关于用随机森林计算 ROC AUC的主要内容,如果未能解决你的问题,请参考以下文章

如何在sklearn中计算随机森林模型的AUC?

集成学习之随机森林案例专题Python机器学习系列(十七)

随机森林:预测 vs predict_proba

R语言基于h2o包构建二分类模型:使用h2o.randomForest构建随机森林模型使用h2o.auc计算模型的AUC值

使用超网格搜索和 10 倍 CV 调整参数后,随机森林模型的 AUC 较低

使用随机森林的基于 AUC 的特征重要性