GridSearchCV — какие данные следует использовать?

#python #training-data #grid-search #gridsearchcv #train-test-split

#python #обучение-данные #сетка-поиск #gridsearchcv #поезд-тест-разделение

Вопрос:

В настоящее время я работаю над проблемой двоичной классификации с примерно 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_)
  

Ответ №1:

Вы можете напрямую применить cv поиска по сетке, не разделяя данные на обучающие и тестовые разделы, как вы делали в варианте 2. Причина этого в том, что ваш набор данных содержит только 2000 точек данных. Если у вас большой набор данных, в этом случае вам, возможно, придется разделить набор данных на 90% обучения и 10% тестирования. Но пока вы можете продолжить с вариантом 2