Изменение веса каждого дерева в случайном лесу - PullRequest
1 голос
/ 10 февраля 2020

В настоящее время я работаю со случайными лесами в режиме scikit-learn.

Существует ли возможный способ изменения весов каждого оценщика, используемого в сгенерированном случайном лесу?

1 Ответ

0 голосов
/ 10 февраля 2020

Вы спрашиваете, как изменить вес каждого оценщика индивидуально или как изменить вес ответа каждого дерева в системе голосования при выполнении predict()?

Когда у вас есть в случайном лесу, параметр estimators_ возвращает массив деревьев решений, и все они могут редактироваться индивидуально, например:

from sklearn.ensemble import RandomForestClassifier

model = RandomForestClassifier(n_estimators=2)

df = pd.DataFrame([[1, True], [2, False]])

model.fit(df[0].to_numpy().reshape(-1,1), df[1])

print(model.estimators_)

Выходы:

[DecisionTreeClassifier(ccp_alpha=0.0, class_weight=None, criterion='gini',
                    max_depth=None, max_features='auto', 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=1942352063, splitter='best'),
 DecisionTreeClassifier(ccp_alpha=0.0, class_weight=None, criterion='gini',
                        max_depth=None, max_features='auto', 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=1414900336, splitter='best')]

Таким образом, вы можете выбрать первый просто с использованием model.estimators_[0].

Затем, если вы прочитаете документ Дерево решений , вы можете изменить feature_importances_ .

Если Ваш вопрос заключается в том, как изменить систему случайного голосования, тогда я рекомендую вам взглянуть на код , но позвольте мне сказать вам, что изменить эту функцию - не очень хорошее решение. .

Как вы можете видеть здесь , случайный лес получает для каждого выхода наибольшую вероятность (из всех деревьев), поэтому вы можете работать с вероятностью прогнозирования каждого дерева решений в отдельности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...