我有一个分类问题,我有一个 8x8 图像的像素值和图像代表的数字,我的任务是使用 RandomForestClassifier 基于像素值预测数字(’Number’ 属性)。数值的值可以是0-9。
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import roc_auc_score
forest_model = RandomForestClassifier(n_estimators=100, random_state=42)
forest_model.fit(train_df[input_var], train_df[target])
test_df['forest_pred'] = forest_model.predict_proba(test_df[input_var])[:,1]
roc_auc_score(test_df['Number'], test_df['forest_pred'], average = 'macro', multi_class="ovr")
在这里它抛出一个 AxisError。
追溯(最近一次通话):
文件“dap_hazi_4.py”,第 44 行,位于
roc_auc_score(test_df['Number'], test_df['forest_pred'], average = 'macro', multi_class="ovo")
文件“/home/balint/.local/lib/python3.6/site-packages/sklearn/metrics/_ranking.py”,第 383 行,在 roc_auc_score
多类、平均、样本权重)
文件“/home/balint/.local/lib/python3.6/site-packages/sklearn/metrics/_ranking.py”,第 440 行,在 _multiclass_roc_auc_score
如果不是 np.allclose(1, y_score.sum(axis=1)):
文件“/home/balint/.local/lib/python3.6/site-packages/numpy/core/_methods.py”,第 38 行,_sum
返回 umr_sum(a, axis, dtype, out, keepdims, initial, where)
AxisError:轴 1 超出了维度 1 数组的范围
原文由 Bálint Béres 发布,翻译遵循 CC BY-SA 4.0 许可协议
该错误是由于您正在按照其他人的建议解决的多类问题。您需要做的就是预测概率,而不是预测类别。我之前遇到过同样的问题,这样做就解决了。
这是如何做到的 -