我想使用Scikit learn找到我的数据框架中每个特征的重要性。
我试图在Scikit学习中使用它,而不是通过WEKA软件使用信息增益,该软件提供分数和旁边的特征名称。
我实现了下一个方法,但是我不知道如何替换分数中的排名号。
例如:我不想看:
- 功能6
- 功能4
…
然而,我更喜欢:
0.4特性6
0.233 feature 4
…
方法如下:
def _rank_features(self, dataframe, targeted_class):
from sklearn.feature_selection import RFE
from sklearn.linear_model import LinearRegression
feature_names = list(dataframe.columns.values)
# use linear regression as the model
lr = LinearRegression()
# rank all features, i.e continue the elimination until the last one
rfe = RFE(lr, n_features_to_select=1)
rfe.fit(dataframe, targeted_class)
print "Features sorted by their rank:"
print sorted(zip(map(lambda x: round(x, 4), rfe.ranking_), feature_names))
有人知道如何从排名转换成分数吗?
如果你想获得你的特征的重要性,你可以使用决策树。在sklearn中有一个名为feature_importances的属性。
所以我建议你做的是使用RFE减少你的特征空间,然后在你的数据集上拟合你的决策树投影在这些特征上。您将能够得到每个特性的重要性。
备注:每个特征的重要性相对于所使用的特征集。因此,使用此方法获得的重要性将不会是您希望使用所有功能获得的一般重要性。但是它可以让你很好地了解最重要的特性中的重要性。