【问题标题】:Scikit learn for ranking features using RFE including scoresScikit 学习使用 RFE 对特征进行排名,包括分数
【发布时间】:2016-10-03 09:49:15
【问题描述】:

我想使用 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))

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

【问题讨论】:

  • 代码的输出是什么?它不起作用?
  • 输出如下所示:按排名排序的美食:[(1.0, 'feature 6'), (2.0, 'feature 4'), (3.0, 'feature 3'), .. . ]
  • sklearn 中的 RFE 只是消除了给定阈值的最差特征(如果您查看源代码),它计算特点

标签: pandas scikit-learn rfe


【解决方案1】:

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

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

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

【讨论】:

  • @Aviade 你明白其中的道理吗?
猜你喜欢
  • 2018-02-06
  • 2013-08-17
  • 2016-03-26
  • 2021-03-26
  • 2021-07-20
  • 1970-01-01
  • 2023-03-18
  • 2019-05-30
  • 2021-04-06
相关资源
最近更新 更多