Кривая ROC для Kfold в Scikit-Learn.Работает хорошо для StraifiedKfold, но показывает ошибку для Kfold - PullRequest
0 голосов
/ 27 января 2019

Я хочу построить Кривая ROC , используя Кросс-валидация Kfold . Однако код, указанный на странице scikit-learn, предназначен для StratifiedKfold. Таким образом, когда я изменяю StratifiedKfold на Kfold, это дает мне None результаты в графиках. В чем может быть проблема?

Пример кода: ScikitLearn

Я изменил StratifiedKfold на Kfold, но он не работает.

1 Ответ

0 голосов
/ 28 января 2019

Перетасуйте данные перед тем, как разрезать сгибы:

cv = KFold(n_splits=6, shuffle=True)

Объяснение:

StratifiedKFold режет сгибы так, чтобы доля классов в каждом сгибе была примерно равнатак же, как и во всем наборе данных.Kfold этого не делает, а просто отсекает складки от образцов в порядке их появления в наборе данных.Следовательно, вы можете или не можете получить все существующие классы во всех сгибах.В этом случае или Iris набор данных, выборки отсортированы по классам, это можно увидеть из цели y:

array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])

Следовательно, в случае 6-кратного разделения вы получаете только один классв кратчайшие сроки большую часть времени и вся модель тренируется с перерывами.Перемешивание позволяет KFold подобрать оба класса в каждом фолде, и все работает отлично.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...