Чтобы выполнить выбор функции с помощью RFE
и , затем установите rf
с 10-кратной перекрестной проверкой, вот как вы можете это сделать:
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.metrics import confusion_matrix
from sklearn.feature_selection import RFE
rf = RandomForestClassifier(random_state = 0, class_weight="balanced")
rfe = RFE(estimator=rf, step=1)
Теперь преобразуйте оригинал X
путем подбора с RFECV
:
X_new = rfe.fit_transform(X, y)
Вот ранжированные функции (не большая проблема только с 4 из них):
rfe.ranking_
# array([2, 3, 1, 1])
Теперь разделить на Обучайте и проверяйте данные и выполняйте перекрестную проверку в сочетании с сеточным поиском, используя GridSearchCV
(обычно они go вместе):
X_train, X_test, y_train, y_test = train_test_split(X_new,y,train_size=0.7)
k_fold = StratifiedKFold(n_splits=10, shuffle=True, random_state=0)
param_grid = {
'n_estimators': [5, 10, 15, 20],
'max_depth': [2, 5, 7, 9]
}
grid_clf = GridSearchCV(rf, param_grid, cv=k_fold.split(X_train, y_train))
grid_clf.fit(X_train, y_train)
y_pred = grid_clf.predict(X_test)
confusion_matrix(y_test, y_pred)
array([[17, 0, 0],
[ 0, 11, 0],
[ 0, 3, 14]], dtype=int64)