使用sklearn的roc_auc_score进行OneVsOne多重分类吗?

问题描述 投票:0回答:1

因此,我正在研究一个模型,该模型尝试使用RandomForest将样本分类为7类中的1类。我可以构建和训练模型,但是在使用roc_auc函数评估模型时,我可以执行'ovr'(oneVsrest),但是'ovo'给我带来了麻烦。

roc_auc_score(y_test, rf_probs, multi_class = 'ovr', average = 'weighted')

上面的方法效果很好,我得到了我的输出,但是,当我将multi_class切换为'ovo'时,我理解这可能会更好地解决类不平衡问题,出现以下错误:

roc_auc_score(y_test, rf_probs, multi_class = 'ovo')

IndexError:数组的索引太多

((我在下面粘贴了整个回溯!)

目前,我的数据设置如下:

y_test(61,1)

y_probs(61,7)

我需要以特殊方式重塑数据以使用'ovo'吗?

在文档中,https://thomasjpfan.github.io/scikit-learn-website/modules/generated/sklearn.metrics.roc_auc_score.html说:“ 二进制y_true,y_score应该是具有更大标签的类的分数。多类情况期望shape = [n_samples,n_classes],其中分数对应于概率估计。

此外,整个回溯似乎暗示使用了更多二进制数组(希望这是正确的术语!我是新来的!)

enter image description here

非常,非常感谢您的任何想法/想法!

python scikit-learn random-forest multiclass-classification
1个回答
0
投票

@@ Tirth Patel提供了正确的答案,我需要使用一种热编码来重塑测试集。谢谢!

© www.soinside.com 2019 - 2024. All rights reserved.