更改随机森林中每棵树的权重

时间:2020-02-10 08:26:39

标签: python scikit-learn

我目前正在scikit-learn下研究随机森林。

是否有可能改变在随机森林中使用的每个估计量的权重?

1 个答案:

答案 0 :(得分:0)

您是否在询问如何更改每个估计量的权重 单独或如何更改 进行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]选择第一个。

然后,如果您阅读Decision tree docu,则可以更改feature_importances_

如果您的问题是如何更改随机森林投票系统,那么我建议您使用look at the code,但让我告诉您,修改不是一个好的决定

您可以看到here,随机森林对于每个输出而言(所有树中的)概率最大,因此您可以分别处理每个决策树的预测概率。