Непонятно, как функция «GridSearchCV» разбивает обучающий и тестовый наборы - PullRequest
0 голосов
/ 23 мая 2018

Непонятно, как функция «GridSearchCV» разбивает обучающий и тестовый наборы.
Всего 67959 строк со знаками.По умолчанию функция train_test_split разделяется на тренировку 75% и тестирование 25%.
В тренировке 50969 и тестирование 16990 строк со знаками.Я печатаю длину массива y_pred в функции «T_scorer», получается 5662. Попутно печатаю матрицу путаницы.Если вы добавите все элементы из матрицы, вы получите около 16990. Оказывается, набор тестов снова разделен на наборы тренировок и тестов.
Что я делаю не так?Мне нужно было проверить набор 16990, а обучение 50969.

[[ 763  891]
 [1216 2792]]
5662
[[2785  525]
 [1578 6440]]
11328

Значение матрицы путаницы

_scorer = make_scorer(T_scorer)

X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)
clf = RandomForestClassifier()
grid_searcher = GridSearchCV(clf, parameter_grid, verbose=20, scoring=_scorer)
grid_searcher.fit(X_test, y_test)
clf_best = grid_searcher.best_estimator_
print('Best params = ', clf_best.get_params())

1 Ответ

0 голосов
/ 23 мая 2018

По умолчанию GridSearchCV выполняет 3-кратную проверку, то есть разделяет ваши данные на 3 равные части (1,2,3) и выполняет следующую последовательность:

  • тренировка на 1,2-> тест en 3
  • поезд на 2,3 -> тест на 1
  • поезд на 1,3 -> тест на 2

Youздесь не нужно использовать разделение "поезд-тест": просто предоставьте X_train, y_train для gridsearchCV и дайте ему работать

Вы также можете посмотреть на часть "cv" документа: http://scikit -learn.org / stable / modules / генерируется / sklearn.model_selection.GridSearchCV.html

РЕДАКТИРОВАТЬ: вот окончательный код из комментариев:

grid_searcher = GridSearchCV(clf, param_grid=parameter_grid, cv=StratifiedKFold(shuffle =True, random_state = 42))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...