Я создаю некоторую структуру перекрестной проверки, которая должна быть очень общей c и может быть применена к любой проблеме классификации. Идея состоит в том, чтобы сохранить номер сгиба в виде нового столбца в фрейме данных, чтобы мы могли использовать его повторно. Я добавил методы для всех видов проблем. Но во время тестирования я узнал, что метод sklearn StratifiedShuffle
перемешивает данные перед каждой из итераций разбиения. Из-за этого тест данные перекрываются в каждой из итераций , и, следовательно, я не могу сохранить индексы каждого сгиба в кадре данных, потому что всегда будет некоторая часть, которая перекрывается и приведет к Nan
. По этой причине я переключился на метод sklearn StratifiedkFold
, чтобы сделать фолды, но затем я получил ошибку, как показано ниже
File "C:\Users\Urvish\AppData\Roaming\Python\Python37\site-packages\sklearn\model_selection\_split.py", line 335, in split
for train, test in super().split(X, y, groups):
File "C:\Users\Urvish\AppData\Roaming\Python\Python37\site-packages\sklearn\model_selection\_split.py", line 89, in split
for test_index in self._iter_test_masks(X, y, groups):
File "C:\Users\Urvish\AppData\Roaming\Python\Python37\site-packages\sklearn\model_selection\_split.py", line 686, in _iter_test_masks
test_folds = self._make_test_folds(X, y)
File "C:\Users\Urvish\AppData\Roaming\Python\Python37\site-packages\sklearn\model_selection\_split.py", line 641, in _make_test_folds
allowed_target_types, type_of_target_y))
ValueError: Supported target types are: ('binary', 'multiclass'). Got 'multiclass-multioutput' instead.
Я знаю, что ошибка вызвана multiclass-multioutput
, и, следовательно, я не могу передать более одного столбец как y
к разделителю.
Теперь вопрос, есть ли способ справиться с проблемой multiclass-multioutput
с StratifiedkFold
? Если это невозможно, то могу ли я использовать StratifiedShuffleSplit
, чтобы он не перекрывал тестовые данные и я получил идеальное разделение?