如何在 Python scikit-learn 中输出随机森林中每棵树的回归预测?

Posted

技术标签:

【中文标题】如何在 Python scikit-learn 中输出随机森林中每棵树的回归预测?【英文标题】:How to output the regression prediction from each tree in a Random Forest in Python scikit-learn? 【发布时间】:2020-02-12 05:40:02 【问题描述】:

我是 scikit-learn 和随机森林回归的新手,想知道除了组合预测之外,是否还有一种简单的方法可以从随机森林中的每棵树获得预测。

基本上,我想在 R 中使用 predict.all = True 选项来做些什么。


# Import the model we are using
from sklearn.ensemble import RandomForestRegressor
# Instantiate model with 1000 decision trees
rf = RandomForestRegressor(n_estimators = 1000, random_state = 1337)
# Train the model on training data
rf.fit(train_features, train_labels)
# Use the forest's predict method on the test data
predictions = rf.predict(test_features)
print(len(predictions)) #6565 which is the number of observations my test set has.

我希望对每棵树进行每一个预测,而不仅仅是每个预测的平均值。

在python中可以做到吗?

【问题讨论】:

【参考方案1】:

使用

import numpy as np
predictions_all = np.array([tree.predict(X) for tree in rf.estimators_])
print(predictions_all.shape) #(1000, 6565) 1000 rows: one for every Tree, 6565 columns, one for every target

这使用了estimators_-属性(参见Docs),它是所有受过训练的DecisionTreeRegressors 的列表。然后我们可以对它们中的每一个调用 predict 方法并将其保存到一个数组中。

【讨论】:

以上是关于如何在 Python scikit-learn 中输出随机森林中每棵树的回归预测?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 python 虚拟环境中导入 scikit-learn?

如何在 Python 中使用带有 Keras 的 scikit-learn 评估指标函数?

如何在 Python scikit-learn 中输出随机森林中每棵树的回归预测?

python - 如何在python scikit-learn中进行字典向量化后预测单个新样本?

如何在 python scikit-learn 中更改精度和召回的阈值?

如何在 python Scikit-learn 中获得凝聚聚类“质心”