小编And*_* Ph的帖子

sklearn RandomForestRegressor 显示的树值中的差异

在使用 RandomForestRegressor 时,我注意到一些奇怪的事情。为了说明问题,这里有一个小例子。我在测试数据集上应用了 RandomForestRegressor 并绘制了森林中第一棵树的图。这给了我以下输出:

Root_node: 
mse=8.64
samples=2
value=20.4

Left_leaf: 
mse=0
samples=1
value=24

Right_leaf: 
mse=0
samples=1
value=18
Run Code Online (Sandbox Code Playgroud)

首先,我希望根节点的值为(24+18)/2=21。但不知何故,它是 20.4。但是,即使这个值是正确的,我如何获得 8.64 的 mse?从我的角度来看,它应该是:(1/2[(24-20.4)^2+(18-20.4)^2]=9.36假设根值 20.4 是正确的)

我的解决办法是:1/2[(24-21)^2+(18-21)^2]=9。如果我只使用 DecisionTreeRegressor,这也是我得到的结果。

RandomForestRegressor 的实现有什么问题还是我完全错了?

这是我的可重现代码:

import pandas as pd
from sklearn import tree
from sklearn.ensemble import RandomForestRegressor
import graphviz

# create example dataset
data = {'AGE': [91, 42, 29, 94, 85], 'TAX': [384, 223, 280, 666, 384], 'Y': [19, 21, 24, 13, 18]}
df = pd.DataFrame(data=data)
x = df[['AGE','TAX']]
y …
Run Code Online (Sandbox Code Playgroud)

python machine-learning random-forest scikit-learn

5
推荐指数
1
解决办法
197
查看次数