Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何在scikit学习中控制随机林中的特征子集?_Python 3.x_Scikit Learn_Random Forest - Fatal编程技术网

Python 3.x 如何在scikit学习中控制随机林中的特征子集?

Python 3.x 如何在scikit学习中控制随机林中的特征子集?,python-3.x,scikit-learn,random-forest,Python 3.x,Scikit Learn,Random Forest,我试图改变随机森林算法在每个节点的子集特征中使用的方式。在Scikit学习方式中实现的原始算法是随机子集。我想从几个子集的几个选项中为每个新节点定义哪个子集。在scikit中有没有直接的方法来学习控制这种方法?如果没有,是否有办法更新Scikit learn的相同代码?如果是,您认为应该更新源代码中的哪个函数 简短版:这就是你的全部 我假设“每个节点的子集特征”指的是样本子集的随机选择,可能还有用于训练森林中单个树木的特征。如果这就是你的意思,那么你不是在建立一个随机的森林;您希望创建特定树的非

我试图改变随机森林算法在每个节点的子集特征中使用的方式。在Scikit学习方式中实现的原始算法是随机子集。我想从几个子集的几个选项中为每个新节点定义哪个子集。在scikit中有没有直接的方法来学习控制这种方法?如果没有,是否有办法更新Scikit learn的相同代码?如果是,您认为应该更新源代码中的哪个函数

简短版:这就是你的全部

我假设“每个节点的子集特征”指的是样本子集的随机选择,可能还有用于训练森林中单个树木的特征。如果这就是你的意思,那么你不是在建立一个随机的森林;您希望创建特定树的非随机森林


一种方法是使用仔细指定的特征子集分别构建每个
DecisionTreeClassifier
,然后使用
VotingClassifier
将树组合成一个林。(该功能仅在0.17/dev中可用,因此您可能需要构建自己的,但构建投票分类器估计器类非常简单。)

亲爱的Andreus,非常感谢您宝贵的时间和回答。也许我的问题不是很清楚。请让我解释一下。我想要的控件位于节点级别,而不是树级别。你的建议在树的层次上。我想要的是与随机林中发生的完全相同的事情,其中在林中每棵树的每个节点的级别上执行特征子集。正如你提到的不同:原始RF随机子集,我要求的不是随机子集。然而,这两种解决方案仍然使用随机重采样数据。谢谢。sklearn有两个不同的随机森林。RandomForestClassifier不使用随机拆分;它使用
标准
算法根据最大信息增益决定拆分,就像每个决策树一样。ExtraTreesClassifier确实在拆分中使用了一些随机性。如果你想手动控制每个节点上发生的事情,也就是说,所有人。亲爱的安德鲁斯,再次感谢你宝贵的时间。我完全同意你关于分裂点的看法。我说的是功能的子集。每个节点上的随机林,(1)随机选择特征子集(我的问题),然后(2)根据基尼杂质或信息增益(您的评论点)进行分割。但是,这两个操作都在节点级别。所以正如你说的,我必须从头开始。您的意思是为决策树构建新类,还是有可能建议我在哪里编辑Scikit学习代码?非常感谢。