scikit-learn 随机森林中单个树的节点值差异

Discrepancy in node values of a single tree in scikit-learn's random forest

提问人:Tongwen Li 提问时间:10/31/2023 最后编辑:DataJanitorTongwen Li 更新时间:11/3/2023 访问量:49

问:

我使用该包构建了一个随机森林模型,并可视化了第一棵树。我不明白为什么有些节点的“价值”不等于平均值。scikit-learn

import numpy as np
from sklearn import tree
import matplotlib.pyplot as plt
from sklearn.ensemble import RandomForestRegressor

X = np.array(list(range(1, 11))).reshape(-1, 1)
y = np.array([4.50, 4.75, 4.91, 5.34, 5.80, 7.05, 7.90, 8.23, 8.70, 9.00])

rf = RandomForestRegressor(n_estimators=3, max_depth=2)
rf.fit(X, y)

fig = plt.figure(figsize=(6, 3), dpi=450)

tree.plot_tree(rf[0], filled=True, precision=6)

plt.show()

如下图所示,带圆圈的节点的“值”为 ,但我认为它应该是:。实际上,我已经检查了很多次,它返回了类似的结果。8.88(8.70+9.00)/2=8.85

但是,使用函数来构建决策树,它就没有这个关系了。DecisionTreeRegressor

See figure here

请解释令人困惑的结果。

scikit-learn 随机森林 决策树

评论

1赞 DataJanitor 11/3/2023
确实很奇怪,即使考虑自举,也没有两个平均值为 8.88 的样本的组合

答: 暂无答案