Scikit learn 其他参数中的参数-在集成学习中使用随机林的引导聚合

Scikit learn 其他参数中的参数-在集成学习中使用随机林的引导聚合,scikit-learn,random-forest,ensemble-learning,Scikit Learn,Random Forest,Ensemble Learning,假设我决定使用一个集成方法——如果它起作用,我们将使用iris数据集。在可用的集成技术中,我们将重点介绍并行方法,并从这些方法中使用sklearn进行引导聚合 Sklearn通过使用BaggingClassifier实现引导聚合,文档告诉我们BaggingClassifier是“适合基本分类器的集成元估计器…”在这些基本分类器中,让我们选择RandomForestClassifier,它本身是“适合许多决策树分类器的元估计器” 我们被告知,引导聚合基本上有四种风格:打包、粘贴、随机子空间和随机补

假设我决定使用一个集成方法——如果它起作用,我们将使用iris数据集。在可用的集成技术中,我们将重点介绍并行方法,并从这些方法中使用sklearn进行引导聚合

Sklearn通过使用BaggingClassifier实现引导聚合,文档告诉我们BaggingClassifier是“适合基本分类器的集成元估计器…”在这些基本分类器中,让我们选择RandomForestClassifier,它本身是“适合许多决策树分类器的元估计器”


我们被告知,引导聚合基本上有四种风格:打包、粘贴、随机子空间和随机补丁。在BaggingClassifier中,我们通过操纵BaggingClassifier的11个参数中的4个来激活这四种口味,即:bootstrap_特征真/假、bootstrap真/假、max_特征=1/在随机林参数和集成分类器参数之间没有冲突。随机林的参数相似的原因是,顺便说一句,max_特征在两者中是相同的,只是措辞不同,因为随机林本身是一个集成算法

因此,您在这里试图实现的是集成分类器的集成,其中每个分类器都有自己的参数。如果我稍微修改一下您的示例,使其更易于理解,我们有:

BaggingClassifier(RandomForestClassifier(n_estimators = 100, bootstrap = True, max_features = 0.5), n_estimators = 5,
   bootstrap_features = False, bootstrap = False, max_features = 1.0, max_samples = 0.6 )
这就是它的工作原理:

首先,集成分类器将获取bootstrap_features=False、max_features=1.0给出的所有特征,并在不替换bootstrap=False的情况下抽取样本的60%max_samples=0.6 然后,它将所有特征和60%的样本提供给一个随机森林 随机林选择50%的特征,而不替换集合在上一步传递的max_特征=0.5,在我们的例子中,这是所有特征,并使用集合分类器传递的60%样本的替换进行引导采样。在此基础上,它训练一个决策树并重复这个过程n_估计器=100次,具有新的特性和新的引导 这是由集成分类器重复n_估计器=5次

希望这有帮助


TLDR:传递给RandomForestClassifier和EnsembleClassifier的参数可能具有相同的名称,并且实际执行相同的操作,它们在训练过程的不同阶段执行,如果在其中一个阶段设置bootstrap=False,它不会将此参数值传递给另一个。

这正是我要找的-现在我明白了:谢谢。很高兴它有帮助!:
clf=BaggingClassifier(RandomForestClassifier(bootstrap = False, max_features = 1.0),
   bootstrap_features = False, bootstrap = False, max_features = 1.0, max_samples = 0.6 )
BaggingClassifier(RandomForestClassifier(n_estimators = 100, bootstrap = True, max_features = 0.5), n_estimators = 5,
   bootstrap_features = False, bootstrap = False, max_features = 1.0, max_samples = 0.6 )