Извлечь членов ансамбля регрессора в мешки - PullRequest
1 голос
/ 19 апреля 2020

Я использовал класс BaggingRegressor, чтобы построить лучшую модель со следующими параметрами:

from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble import BaggingRegressor
Reg_ensemble=BaggingRegressor(base_estimator=DecisionTreeRegressor(max_depth=3),n_estimators=10,random_state=0).fit(feature,target)

с указанными выше настройками, он создаст 10 деревьев. Я хочу извлечь и получить доступ к каждому члену ансамблевой регрессии (каждому дереву) отдельно, а затем подогнать тестовый образец для каждого из них. Можно ли получить доступ к каждой модели?

1 Ответ

1 голос
/ 19 апреля 2020

Атрибут estimators_ подобранной модели предоставляет список с оценками ансамбля; Вот пример с фиктивными данными и n_estimators=3 для краткости:

from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble import BaggingRegressor
from sklearn.datasets import make_regression

X, y = make_regression(n_samples=100, n_features=4,
                    n_informative=2, n_targets=1,
                    random_state=0, shuffle=False)
regr = BaggingRegressor(base_estimator=DecisionTreeRegressor(max_depth=3),
                        n_estimators=3, random_state=0)
regr.fit(X, y)

regr.estimators_
# result:
[DecisionTreeRegressor(ccp_alpha=0.0, criterion='mse', max_depth=3,
                       max_features=None, max_leaf_nodes=None,
                       min_impurity_decrease=0.0, min_impurity_split=None,
                       min_samples_leaf=1, min_samples_split=2,
                       min_weight_fraction_leaf=0.0, presort='deprecated',
                       random_state=2087557356, splitter='best'),
 DecisionTreeRegressor(ccp_alpha=0.0, criterion='mse', max_depth=3,
                       max_features=None, max_leaf_nodes=None,
                       min_impurity_decrease=0.0, min_impurity_split=None,
                       min_samples_leaf=1, min_samples_split=2,
                       min_weight_fraction_leaf=0.0, presort='deprecated',
                       random_state=132990059, splitter='best'),
 DecisionTreeRegressor(ccp_alpha=0.0, criterion='mse', max_depth=3,
                       max_features=None, max_leaf_nodes=None,
                       min_impurity_decrease=0.0, min_impurity_split=None,
                       min_samples_leaf=1, min_samples_split=2,
                       min_weight_fraction_leaf=0.0, presort='deprecated',
                       random_state=1109697837, splitter='best')]

После того, как вы установили BaggingRegressor (базовые оценки не существуют до установки), вы можете получить доступ к базовым оценкам для установки с данными Xs, ys просто как:

for model in regr.estimators_:
    model.fit(Xs, Ys)
...