首页 > 解决方案 > 多类分类的概率阈值

问题描述

我在 Python 中使用随机森林将我的数据分为 6 个类。我的数据是 X、Y、Z 坐标、一些几何特征和标签。我正在使用几何特征和标签来使用训练集(随机 70% 的数据)训练分类器。我还想在测试集上使用一个概率阈值,比如说 50%(其余 30% 的数据),因此预测概率小于 50% 的数据被分配给代表未知和所有的类 6其余的从 0 到 5 正常。但是,我希望输出预测标签的顺序与我的测试集中的顺序相同,这样我就可以轻松地将预测标签与 XYZ 坐标相关联以进行可视化。我怎么能在 Python 中实现呢?

标签: pythonrandom-forestmulticlass-classification

解决方案


如果我没听错的话;如果您的五个班级都没有概率> 0.5,您会将输入分配为名为的第六个班级unknown

您可以将该predict_proba方法用于 RandomForest (RF) 类。它为您的所有课程提供“概率”,例如一个样本


pred = RF.predict_proba(X_test)
#pred
#[[0.2,0.3,0.1,0.40],
#[0.8,0.1,0.05,0.05,0]]

我们将第一个指定为unknown(6 类),将第二个指定为 1 类。

然后,您可以在整个测试集上使用它

pred = RF.predict_proba(X_test)
classes = [6 if sum(p<0.5)==5 else np.argmax(p)+1 for p in pred] 

推荐阅读