Scikit учиться для ранжирования функций с использованием RFE, включая оценки

Я хотел бы выяснить важность каждой функции в моем фрейме данных с помощью Scikit learn.

Я пытаюсь использовать его в Scikit learn вместо Info Gain с помощью программного обеспечения WEKA, которое предоставляет счет и название функции рядом с ним.

Я реализовал следующий метод, но я не знаю, как заменить рейтинг в рейтинге.

Например:

Я не хочу видеть:

  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 ответ

Если вы хотите понять важность своих функций, вы можете использовать дерево решений. В sklearn у него есть атрибут feature_importances.

Поэтому я предлагаю вам уменьшить пространство функций с помощью RFE, а затем разместить дерево решений в наборе данных, проецируемом на эти функции. Вы сможете получить важность каждой функции.

Примечание. Важность каждой функции зависит от набора используемых функций. Таким образом, значения, которые вы получите, используя этот метод, не будут общими значениями, которые вы хотели получить, используя все функции. Но это дает вам хорошее представление о важности среди наиболее важных функций.

Другие вопросы по тегам