В настоящее время я работаю над проблемой бинарной классификации с примерно 2000 точками данных в обучающем наборе, и мне интересно, следует ли мне использовать весь обучающий набор для gridsearch или я должен сначала сделать разделение для генерации данных проверки. У меня есть 2 варианта на выбор. Первый - с разделением train / val, а второй - без разделения (GridSearchCV для всего обучающего набора)
1. Вариант
Сплит поезд / вал
X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, stratify=y, random_state=rs)
GridSearchCV в SVC (только с использованием x_train и y_train)
skf = StratifiedKFold(n_splits=splits, shuffle=True, random_state=rs)
params = {"C": [0.12, 0.13, 0.14, 0.15]}
clf = GridSearchCV(SVC(random_state=rs), params, cv=skf, n_jobs=-1, scoring=monetary_score)
clf.fit(X_train, y_train)
print(grid.best_params_)
print(grid.best_score_, "\n")
print(grid.best_estimator_)
Использование набора для проверки
final_clf = clf.best_estimator_
y_pred = final_clf.predict(X_val)
cm = confusion_matrix(y_val, y_pred)
print(cm)
2. Вариант
GridSearchCV в SVC (с использованием всех x и y)
skf = StratifiedKFold(n_splits=splits, shuffle=True, random_state=rs)
params = {"C": [0.12, 0.13, 0.14, 0.15]}
clf = GridSearchCV(SVC(random_state=rs), params, cv=skf, n_jobs=-1, scoring=monetary_score)
clf.fit(X, y)
print(grid.best_params_)
print(grid.best_score_, "\n")
print(grid.best_estimator_)