Ранжирование всех функций по порядку с помощью scikit-learn - PullRequest
1 голос
/ 11 марта 2019

Я пытаюсь отсортировать все функции по порядку, используя scikit-learn f_regression и SelectKBest .Этот метод хорошо работает, если число ранжированных объектов k меньше, чем общее количество функций n.Однако, если я установлю k = n, то вывод SelectKBest будет в том же порядке, что и исходный массив объектов.Как я могу отсортировать все функции в порядке их важности?

Код ниже:

from sklearn.feature_selection import SelectKBest, f_regression

n = len(training_features.columns)

selector = SelectKBest(f_regression, k = n)
selector.fit(training_features.values, training_targets.values[:, 0])

k_best_features = list(training_features.columns[selector.get_support(indices = True)])

Ответы [ 2 ]

0 голосов
/ 13 марта 2019

Я использовал это решение:

import numpy as np
from sklearn.feature_selection import f_regression

k = 10    # number of best features to obtain

scores, _ = f_regression(training_features.values, training_targets.values[:, 0])
indices = np.argsort(scores)[::-1]
k_best_features = list(training_features.columns.values[indices[0:k]])
0 голосов
/ 11 марта 2019

Я думаю, что сортировка талантов по оценкам, данным f_regression, может быть произведена с использованием

pd.DataFrame(dict(feature_names= training_features.columns , scores = selector.scores_))\
    .sort_values('scores',ascending = False)
...