我正在尝试为sklearn中的随机森林回归模型实现R的特征重要性评分方法;根据R的文档:
第一个度量是根据置换OOB数据计算的:对于每个树,记录数据的袋外部分的预测误差(分类的错误率,回归的MSE) . 然后在置换每个预测变量之后完成相同的操作 . 然后将两者之间的差异在所有树上进行平均,并通过差异的标准偏差进行归一化 . 如果变量的差异的标准偏差等于0,则不进行除法(但在这种情况下平均值几乎总是等于0) .
因此,如果我理解正确,我需要能够为每个树中的OOB样本置换每个预测变量(特征) .
我知道我可以通过这样的方式访问训练有素的森林中的每棵树
numberTrees = 100
clf = RandomForestRegressor(n_estimators=numberTrees)
clf.fit(X,Y)
for tree in clf.estimators_:
do something
无论如何得到每棵树的OOB样本列表?也许我可以将每棵树的 random_state
推导出OOB样本列表?
1 回答
虽然R使用OOB样本,但我发现通过使用所有训练样本,我在scikit中得到了类似的结果 . 我正在做以下事情: