如何从Scikit-learn中的拟合模型中获取属性列表?

6

有没有办法从Scikit-learn中使用的模型中获取特征(属性)列表(或整个训练数据表)?

我正在使用一些预处理,如特征选择,我想知道哪些特征被选择了,哪些被删除了。例如,我使用随机森林分类器和递归特征消除。

1个回答

1
RFE对象的“_support”属性存储所选特征的掩码。
查看此处的文档: http://scikit-learn.org/stable/modules/generated/sklearn.feature_selection.RFE.html#sklearn.feature_selection.RFE 以下是一个示例:
from sklearn.datasets import make_friedman1
from sklearn.feature_selection import RFE
from sklearn.svm import SVR

# load a dataset
X, y = make_friedman1(n_samples=50, n_features=10, random_state=0)

estimator = SVR(kernel="linear")
selector = RFE(estimator, 5, step=1)
X_new = selector.fit_transform(X, y)

print selector.support_ 
print selector.ranking_

会显示:
array([ True,  True,  True,  True,  True,
      False, False, False, False, False], dtype=bool)
array([1, 1, 1, 1, 1, 6, 4, 3, 2, 5]) 

请注意,如果您想在RFE模型中使用随机森林分类器,则会出现此错误:
AttributeError: 'RandomForestClassifier' object has no attribute 'coef_'

我在这个帖子中找到了一个解决方法:使用scikit-learn对随机森林进行递归特征消除 你需要像这样覆盖RandomForestClassifier类:
class RandomForestClassifierWithCoef(RandomForestClassifier):
    def fit(self, *args, **kwargs):
        super(RandomForestClassifierWithCoef, self).fit(*args, **kwargs)
        self.coef_ = self.feature_importances_

希望它有所帮助 :)

谢谢,这正是我在寻找的内容! - Bohemiak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接