0

我想使用 Scikit learn 在我的数据框中找到每个功能的重要性。

我正在尝试在 Scikit learn 中使用它,而不是通过 WEKA 软件使用 Info Gain,该软件提供分数和旁边的功能名称。

我实现了下一个方法,但是我不知道如何替换分数中的排名数字。

例如:

我不想看到:

  1. 功能 6
  2. 特色 4

...

但是,我更喜欢:

0.4 特征 6

0.233 特征 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))

有人知道如何从排名转换为分数吗?

4

1 回答 1

0

如果您想了解您的功能的重要性,您可以使用决策树。在sklearn中,它有一个名为feature_importances的属性。

所以我建议你做的是使用RFE减少你的特征空间,然后在你的数据集上拟合你的决策树,这些数据集投影在这些特征上。您将能够了解每个功能的重要性。

备注:每个特征的重要性与所使用的特征集有关。因此,您将使用此方法获得的重要性不会是您想要使用所有功能获得的一般重要性。但它可以让您很好地了解最重要功能中的重要性。

于 2016-10-03T14:35:19.987 回答