我在 Python 中使用随机森林将我的数据分为 6 类。我的数据是 X、Y、Z 坐标、一些几何特征和标签。我正在使用几何特征和标签来使用训练集(我的数据的随机 70%)来训练分类器。我还想在测试集(其余 30% 的数据)上使用假设概率阈值 50%,因此预测概率小于 50% 的数据被分配到代表未知和所有的第 6 类其余从 0 到 5 正常。但是,我希望输出预测标签的顺序与我的测试集中的顺序相同,这样我就可以轻松地将预测标签与 XYZ 坐标相关联,以实现可视化目的。我如何在 Python 中实现它?
最佳答案
如果我没理解错的话;如果您的五个类别中没有一个概率大于 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]]
我们将第一个分配为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]
关于python - 多类分类的概率阈值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63118458/