多类分类的概率阈值

4

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

1个回答

1
如果我理解正确的话,如果您的五个类别中没有一个概率大于0.5,您将把输入指定为第六个名为unknown的类别?
您可以使用RandomForest(RF)类的predict_proba方法。它为所有类别提供“概率”,例如对于一个样本。

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

我们会将第一个分配为未知(类别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] 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接