Получение функций в RFECV scikit-learn - PullRequest
0 голосов
/ 17 мая 2018

Вдохновленный этим: http://scikit -learn.org / stable / auto_examples / feature_selection / plot_rfe_with_cross_validation.html # sphx-glr-auto-examples-feature-selection-plot-rfe-with-cross-validation- ру

Мне интересно, есть ли возможность получить функции для конкретного счета:

enter image description here

В этом случае я хотел бы знать, какие 10 выбранных функций дают этот пик, когда #Features = 10.

Есть идеи?

РЕДАКТИРОВАТЬ:

Это код, используемый для получения этого сюжета:

from sklearn.feature_selection import RFECV
from sklearn.model_selection import KFold,StratifiedKFold #for K-fold cross validation
from sklearn.ensemble import RandomForestClassifier #Random Forest

# The "accuracy" scoring is proportional to the number of correct classifications
#kfold = StratifiedKFold(n_splits=10, random_state=1) # k=10, split the data into 10 equal parts
model_Linear_SVM=svm.SVC(kernel='linear', probability=True)
rfecv = RFECV(estimator=model_Linear_SVM, step=1, cv=kfold,scoring='accuracy')   #5-fold cross-validation
rfecv = rfecv.fit(X, y)

print('Optimal number of features :', rfecv.n_features_)
print('Best features :', X.columns[rfecv.support_])
print('Original features :', X.columns)
plt.figure()
plt.xlabel("Number of features selected")
plt.ylabel("Cross validation score \n of number of selected features")
plt.plot(range(1, len(rfecv.grid_scores_) + 1), rfecv.grid_scores_)
plt.show()

1 Ответ

0 голосов
/ 17 мая 2018

Во-первых, вы можете увидеть, какие функции были выбраны, когда оценка перекрестной проверки является наибольшей (в вашем случае это соответствует количеству функций 17 или 21, я не уверен из рисунка) с

rfecv.support_

или

rfecv.ranking_ 

Затем вы можете рассчитать значения выбранных объектов (для пика кривой оценки cv) по

np.absolute(rfecv.estimator_.coef_)

для простых оценщиков или

rfecv.estimator_.feature_importances_ 

если ваш оценщик - это какой-то ансамбль, например, случайный лес.

Затем вы можете удалить наименее важный элемент по одному в цикле и пересчитать rfecv для оставшихся наборов компонентов.

...