Python 如何使树估计具有随机分裂参数?

Python 如何使树估计具有随机分裂参数?,python,scikit-learn,random-forest,Python,Scikit Learn,Random Forest,我想更改用于随机林分类器的一半树的拆分器参数。 然而,如果我不训练(适应)他们,估计是不可访问的。 例如,我想要的是如下所示: rfc = RandomForestClassifier() for tree in rfc.estimators_: if np.random.rand() <= 0.5: tree.splitter = 'random' 它似乎工作得很好,没有任何错误(对于预测或概率预测),但这种方法实际上是无错误的吗?我想,你的问题可以概括为:如

我想更改用于随机林分类器的一半树的拆分器参数。 然而,如果我不训练(适应)他们,估计是不可访问的。 例如,我想要的是如下所示:

rfc = RandomForestClassifier()
for tree in rfc.estimators_:
    if np.random.rand() <= 0.5:
         tree.splitter = 'random'

它似乎工作得很好,没有任何错误(对于预测或概率预测),但这种方法实际上是无错误的吗?

我想,你的问题可以概括为:如何使树估计具有拆分器参数
随机
而不是其默认值
最佳
。由于RF树是独立的(假设使用不同的随机种子),因此将其设置为一半树的问题可以通过训练具有不同参数的两个分类器并将其合并(通过平均预测概率)来解决因此可以叠加在一起。@MykhailoLisovyi我不熟悉集合分类器的“.fit”和“.predict”的功能。您能否详细说明如何在不引起任何内部问题的情况下合并它们?(我担心我可能会在不触发任何语法错误的情况下引发问题,在这种情况下,我甚至不知道我是否做错了什么)好吧,您可以实例化
clf1
clf2
(使用不同的随机种子和参数)。你用同样的数据训练他们。然后你做
pred\u prob=clf1(predict\u proba(X\u test)+clf.predict\u proba(X\u test))/2
。我相信,这就是RFC在内部所做的,根据训练过的N棵树来做出平均决策,如前所述。如果你需要二进制预测,你可以通过将
pred_prob>0.5
转换成INTS来获得它们。你为什么要这样做?@BertKellerman我遇到了一种称为“向前思考”(Forward Thinking)的堆叠算法,作者通过github提供了代码。然而,我不确定这是否是因为他们使用的旧版本,但上面的代码(我的问题)有点我无法运行。
rfc_etc_merge = RandomForestClassifier()
rfc_etc_merge.estimators_ = rfc.estimators_ + etc.estimators_
rfc_etc_merge.n_classes_ = rfc.n_classes_
rfc_etc_merge.n_outputs_ = rfc.n_outputs_
rfc_etc_merge.classes_ = rfc.classes_