Если, вы хотите точно настроить гиперпараметр вашего классификатора (с перекрестной проверкой) после выбора функций с использованием рекурсивного исключения функций (с перекрестной проверкой). Объект 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