У меня есть несколько сотен строк данных, которые можно сгруппировать в идентификаторы следующим образом:

df = Val1 Val2 Val3 Id
      2     2   8    b
      1     2   3    a
      5     7   8    z
      5     1   4    a
      0     9   0    c
      3     1   3    b
      2     7   5    z
      7     2   8    c
      6     5   5    d
...
      5     1   8    a
      4     9   0    z
      1     8   2    z

Я хочу использовать GridSearchCV, но с пользовательским резюме, которое гарантирует, что все строки с одним и тем же идентификатором всегда будут в одном наборе. Таким образом, либо все строки, если a находятся в наборе тестов, либо все они находятся в наборе поездов - и так же для всех различных идентификаторов.

Я хочу иметь 5 сгибов - поэтому 80% идентификаторов пойдут на поезд и 20% на тест. Я понимаю, что не может гарантировать, что все сгибы будут иметь одинаковое количество строк - поскольку один идентификатор может иметь больше строк, чем другой.

Каков наилучший способ сделать это?

0
okuoub 20 Апр 2020 в 16:32

2 ответа

Как упоминалось в документации, есть параметр называется «cv», где вы можете указать «Итеративный результат (тренировка, тестирование) в виде массивов индексов».

Сначала проверьте документацию в будущем.

0
Ni Yi Puay 21 Апр 2020 в 04:57

Как уже говорилось, вы можете предоставить cv итератор. Вы можете использовать GroupShuffleSplit (). Например, если вы используете его для разделения набора данных, вы можете поместить результат в GridSearchCV() для параметра cv.

0
thomaskolasa 2 Май 2020 в 21:34