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

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

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

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

Например:

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

  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))

Кто-нибудь знает, как преобразовать рейтинг в балл?


person Aviade    schedule 03.10.2016    source источник
comment
Каков результат вашего кода? Это не работает ?   -  person MMF    schedule 03.10.2016
comment
Вывод выглядит следующим образом: еда отсортирована по рангу: [(1.0, 'функция 6'), (2.0, 'функция 4'), (3.0, 'функция 3'), ... ]   -  person Aviade    schedule 03.10.2016
comment
RFE в sklearn просто исключает худшие функции с заданным порогом (если вы посмотрите на исходный код), он не вычисляет важность функций   -  person MMF    schedule 03.10.2016


Ответы (1)


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

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

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

person MMF    schedule 03.10.2016
comment
@Aviade Вы понимаете аргументацию? - person MMF; 04.10.2016