用随机森林计算 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的主要内容,如果未能解决你的问题,请参考以下文章