python - 多类分类的概率阈值

标签 python random-forest multiclass-classification

我在 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/

相关文章:

xgboost - 如何在xgboost的多类分类中为不平衡数据设置权重?

machine-learning - 训练多类分类器进行二元分类

python - LightGBM多分类预测结果

python - Numpy 数组减法创建一个具有不同维度的矩阵。如何纠正?

python - "Group"行基于一列,然后为现有其他列值的可能组合创建新列

machine-learning - 值错误 : 'mean_squared_error' is not a valid scoring value

python - 随机森林多类 : what is shap_values[i]? 的 SHAP TreeExplainer

python - NumPy:需要一个函数,其中:f(目标数组,索引数组,某个数字)-> 目标数组,其索引填充有某个数字

python - Scrapy 脚本出现 502 错误

python - 随机森林回归中的样本大小