相关疑难解决方法(0)

使用scikit-learn消除随机森林的递归特征

我正在尝试使用scikit-learn和随机林分类器预先形成递归特征消除,使用OOB ROC作为对递归过程中创建的每个子集进行评分的方法.

但是,当我尝试使用该RFECV方法时,我收到一个错误说法AttributeError: 'RandomForestClassifier' object has no attribute 'coef_'

随机森林本身没有系数,但它们确实按基尼评分排名.所以,我想知道如何解决这个问题.

请注意,我想使用一种方法,明确地告诉我pandas在最佳分组中选择了我的DataFrame中的哪些功能,因为我使用递归功能选择来尝试最小化我将输入到最终分类器的数据量.

这是一些示例代码:

from sklearn import datasets
import pandas as pd
from pandas import Series
from sklearn.ensemble import RandomForestClassifier
from sklearn.feature_selection import RFECV

iris = datasets.load_iris()
x=pd.DataFrame(iris.data, columns=['var1','var2','var3', 'var4'])
y=pd.Series(iris.target, name='target')
rf = RandomForestClassifier(n_estimators=500, min_samples_leaf=5, n_jobs=-1)
rfecv = RFECV(estimator=rf, step=1, cv=10, scoring='ROC', verbose=2)
selector=rfecv.fit(x, y)

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/bbalin/anaconda/lib/python2.7/site-packages/sklearn/feature_selection/rfe.py", line 336, in fit
    ranking_ = …
Run Code Online (Sandbox Code Playgroud)

python feature-selection pandas random-forest scikit-learn

16
推荐指数
4
解决办法
2万
查看次数