我想使用Scikit学习我的数据框中的每个功能的重要性。
我试图在Scikit中使用它而不是通过WEKA软件使用Info Gain,它提供了旁边的分数和功能名称。
我实现了下一个方法,但我不知道如何替换得分中的排名数。
例如:
我不想看到:
...
但是,我更喜欢:
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))
有人知道如何将排名转换为分数吗?
答案 0 :(得分:0)
如果您想了解功能的重要性,可以使用决策树。在 sklearn 中,它有一个名为 feature_importances 的属性。
因此,我建议您使用 RFE 缩小功能空间,然后在投影在这些功能上的数据集上使用决策树。您将能够了解每个功能的重要性。
备注:每项功能的重要性与所使用的功能集相关。因此,使用此方法获得的重要性不会成为您希望使用所有功能获得的一般重要性。但它让您对最重要的功能之间的重要性有了很好的了解。