функция ранжирования scikit-learn возвращает идентичные значения - PullRequest
6 голосов
/ 05 июня 2019

Я использую класс scikit-learn RFECV для выбора функций.Я заинтересован в определении относительной важности группы переменных.Однако scikit-learn возвращает одинаковое ранжирование (1) для нескольких переменных.Это также можно увидеть в их примере кода:

>>> from sklearn.datasets import make_friedman1
>>> from sklearn.feature_selection import RFECV
>>> from sklearn.svm import SVR
>>> X, y = make_friedman1(n_samples=50, n_features=10, random_state=0)
>>> estimator = SVR(kernel="linear")
>>> selector = RFECV(estimator, step=1, cv=5)
>>> selector = selector.fit(X, y)
>>> selector.support_ 
array([ True,  True,  True,  True,  True, False, False, False, False,
       False])
>>> selector.ranking_
array([1, 1, 1, 1, 1, 6, 4, 3, 2, 5])

Есть ли способ, с помощью которого я могу сделать так, чтобы scikit-learn также идентифицировал относительную важность между основными функциями?

Я счастливувеличить количество деревьев или аналогичных, если это необходимо.В связи с этим, есть ли способ убедиться в этом рейтинге?

1 Ответ

5 голосов
/ 07 июня 2019

Цель RFECV состоит в том, чтобы выбрать оптимальное количество функций, чтобы выполнить перекрестную проверку по количеству выбранных функций. В вашем случае он выбран, чтобы сохранить 5 функций. Затем модель переоборудуется на весь набор данных, пока не останется только 5 функций. Они не удалены, поэтому они не ранжируются в RFE.

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

from sklearn.datasets import make_friedman1
from sklearn.feature_selection import RFE
from sklearn.svm import SVR
X, y = make_friedman1(n_samples=50, n_features=10, random_state=0)
estimator = SVR(kernel="linear")
selector = RFE(estimator, step=1, n_features_to_select=1)
selector = selector.fit(X, y)
selector.ranking_

массив ([4, 3, 5, 1, 2, 10, 8, 7, 6, 9])

Вы можете спросить себя, почему ранжирование из перекрестной проверки не сохраняется, что вычисляет ранжирование для всех функций. Однако для каждого разделения в перекрестной проверке функции могли быть ранжированы по-разному. Таким образом, RFECV может вернуть 5 разных рейтингов, и вы можете сравнить их. Это не интерфейс, хотя (но это также легко сделать с помощью RFE и сделать резюме самостоятельно).

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

...