Как вывести прогноз регрессии из каждого дерева в Случайном Лесу в Python scikit-learn? - PullRequest
2 голосов
/ 15 октября 2019

Я новичок в области 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.

Я хочу, чтобы каждый отдельный прогноз каждого дерева, а не только среднее значение их длякаждое предсказание.

Возможно ли сделать это на питоне?

1 Ответ

2 голосов
/ 15 октября 2019

Использовать

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_ (см. Документы ), который представляет собой список всех обученных DecisionTreeRegressors . Затем мы можем вызвать метод прогнозирования для каждого из них и сохранить его в массиве.

...