python - 多类分类的概率阈值
问题描述
我在 Python 中使用随机森林将我的数据分为 6 个类。我的数据是 X、Y、Z 坐标、一些几何特征和标签。我正在使用几何特征和标签来使用训练集(随机 70% 的数据)训练分类器。我还想在测试集上使用一个概率阈值,比如说 50%(其余 30% 的数据),因此预测概率小于 50% 的数据被分配给代表未知和所有的类 6其余的从 0 到 5 正常。但是,我希望输出预测标签的顺序与我的测试集中的顺序相同,这样我就可以轻松地将预测标签与 XYZ 坐标相关联以进行可视化。我怎么能在 Python 中实现呢?
解决方案
如果我没听错的话;如果您的五个班级都没有概率> 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]
推荐阅读
- tensorflow2.0 - 我们可以更改 TFLite 模型的 max_detections 数量吗?
- c# - 在 Unity 中,我可以让实例化函数接受自定义坐标而不是 Vector3 或 Transform 吗?
- kubernetes - 通过 cli 在 pod 中配置资源限制
- flutter - 列表瓷砖颤动的交替背景颜色
- c++ - 无法理解二维数组指针中发生了什么
- http - 分块传输编码数据可以包含 CRLF 吗?
- python - python中(x,y)点列表的移动平均值
- android - 如何在 JetPack Compose Android 的应用程序类中使用偏好数据存储来更改主题?
- python - 如果将birth_month 中的值2 和birth_date 设置为30 或31,它应该打印Invalid Option。但相反,它会为我输入的任何值打印 Invalid Option
- javascript - 如何正确读取 NextJS 中的 Axios 授权令牌以获取需要身份验证的请求?