Tuesday, August 16, 2022

How to perform feature selection with gridsearchcv in sklearn in python

 Если, вы хотите точно настроить гиперпараметр вашего классификатора (с перекрестной проверкой) после выбора  функций с использованием рекурсивного исключения функций (с перекрестной проверкой). Объект Pipeline как раз и предназначен для сборки преобразования данных и применения оценщика. Возможно, вы могли бы использовать другую модель (GradientBoostingClassifier и т. д.) для окончательной классификации. Это возможно при следующем подходе:

(.env) boris@boris-All-Series:~/GRIDSEARCH$ cat GridSearch.py

from sklearn.datasets import load_breast_cancer

from sklearn.feature_selection import RFECV

from sklearn.model_selection import GridSearchCV

from sklearn.model_selection import train_test_split

from sklearn.ensemble import RandomForestClassifier

from sklearn.pipeline import Pipeline

# using sample dataset

X, y = load_breast_cancer(return_X_y=True)

X_train, X_test, y_train, y_test = train_test_split(X, y, 

                                                    test_size=0.33, 

                                                    random_state=42)

#this is the classifier used for feature selection

clf_featr_select = RandomForestClassifier(n_estimators=30, 

                                        random_state=42,

                                        class_weight="balanced") 

rfecv = RFECV(estimator=clf_featr_select, 

              step=1, 

              cv=5, 

              scoring = 'roc_auc')

#you can have different classifier for your final classifier

clf = RandomForestClassifier(n_estimators=10, 

                             random_state=42,

                             class_weight="balanced") 

CV_RFC = GridSearchCV(clf, 

                      param_grid={'max_depth':[2,3]},

                      cv= 5, scoring = 'roc_auc')

pipeline  = Pipeline([('feature_select',rfecv),

                      ('clf_cv',CV_RFC)])

pipeline.fit(X_train, y_train)

print(pipeline.predict(X_test))


(.env) boris@boris-All-Series:~/GRIDSEARCH$ python3 GridSearch.py

[1 0 0 1 1 0 0 0 0 1 1 0 1 0 1 0 1 1 1 0 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1

 1 0 1 1 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 0 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0

 1 1 1 0 1 1 0 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 1 0 0 1 0 0 1 1 1 0 0 1 0

 1 1 0 1 0 1 1 1 0 1 1 1 0 1 0 0 1 1 0 0 0 1 1 1 0 1 1 0 0 1 0 1 1 0 1 0 0

 1 1 0 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 1 0 0

 0 1 1]

Теперь вы можете применить этот конвейер (включая выбор функций) для тестовых данных.

















No comments:

Post a Comment