我有一个分类问题,其中我拥有一张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(multi_class, average, sample_weight) 文件“/home/balint/.local/lib/python3.6/site-packages/sklearn/metrics/_ranking.py”,第440行, if not np.allclose(1, y_score.sum(axis=1)): 文件“/home/balint/.local/lib/python3.6/site-packages/numpy/core/_methods.py”,第38行, return umr_sum(a, axis, dtype, out, keepdims, initial, where)
AxisError:维数为1的数组的轴1超出范围。
sklearn.model_selection.cross_validate
等函数时,如果出现该错误,你只需要在make_scorer(roc_auc_score, multi_class='ovo', needs_proba=True)
中设置needs_proba=True
即可。 - lhaferkamp