python 随机森林分类器值不是整数

qnzebej0  于 2023-05-21  发布在  Python
关注(0)|答案(1)|浏览(198)
    • bounty还有7天到期**。回答此问题可获得+50声望奖励。Edo Wexler正在寻找来自可靠来源的**答案 *:尚未提出合适的解决方案。

我已经使用二进制分类目标变量训练了RF模型。由于我的数据不平衡,我使用class_weight='balanced'(我看到这可能是原因,无法找到解决这个问题的方法)。当从模型中绘制一棵树时,我得到以下输出:

验证码:

import graphviz
from sklearn import tree
import os

# Assuming your Random Forest model is named 'model'
trees = model.estimators_

# Plot the first tree
dot_data = tree.export_graphviz(trees[0], out_file=None, filled=True, rounded=True, special_characters=True) #), feature_names=X_rf.columns)
graph = graphviz.Source(dot_data)
graph

当我在模型训练中没有使用class_weight='balanced'时,我得到了预期的行为。
我希望在value属性中看到每个节点的整数值,如value = [124, 2145]

编辑

我已经尝试添加了proportion = True,正如评论中所建议的那样(我在Github问题的参考中找到了答案)。
它只是将值从count改为proportion。这并不能解决问题。
看起来只有将值乘以反权重才能解决这个问题,但我找不到一个实现(提醒-问题只在于可视化结果,而不是模型的性能)。

laik7k3q

laik7k3q1#

plot_tree的文档中:
所示的样本计数用可能存在的任何sample_weights加权。
也就是说,这些数字是每个类别的样本的总权重。由于权重是类权重,因此只需除以相应的类权重即可恢复样本计数。

相关问题