使用python scikit-learn套装(引导)RFE

z99*_*991 5 python scikit-learn

我想用python scikit-learn进行装袋.我想结合RFE(),递归特征选择算法.步骤如下.

  1. 制作30个子集,允许冗余选择(装袋)
  2. 为每个数据集执行RFE
  3. 获取每个分类的输出
  4. 从每个输出中找到前5个功能

我尝试使用BaggingClassifier方法,如下所示,但它花了很多时间,似乎无法正常工作.仅使用RFE可以正常工作(rfe.fit()).

cf1 = LinearSVC()
rfe = RFE(estimator=cf1)
bagging = BaggingClassifier(rfe, n_estimators=30)
bagging.fit(trainx, trainy)
Run Code Online (Sandbox Code Playgroud)

此外,步骤4可能难以找到顶部特征,因为Bagging分类器不提供像RFE()中的ranking_的属性.还有其他一些好方法可以实现这4个步骤吗?

Cha*_*esG 0

如果没有装袋,可以通过以下行访问 RFE 给出的排名:

rfe.ranking_
Run Code Online (Sandbox Code Playgroud)

此顺序可用于对特征名称进行排序,然后取前五个特征。有关此参数的示例,请参阅sklearn RFE 文档。通过装袋,您将需要访问 30 个估算器中的每一个。根据sklearn BaggingClassifier 的文档,您可以通过以下方式访问它们:

bagging.estimators_
Run Code Online (Sandbox Code Playgroud)

所以:对于 bagging.estimators_ 中的每个 bagging,获取排名,根据这个排名对特征进行排序,并取前五个元素!希望这可以帮助。