Разделение данных на тренировочные и тестовые данные с сохранением соотношения - PullRequest
0 голосов
/ 02 октября 2018

У меня есть набор данных Iris (можно найти здесь: https://www.kaggle.com/uciml/iris), который я должен разделить на тестовый и тренировочный набор.Однако мне нужно разделить его так, чтобы распределение классов в обучающем и тестовом наборе было таким же, как в полном наборе данных.

Я видел лучший ответ в этом вопросе: как разделить набор данных на соотношения между учебными и проверочными наборами между классами? но так как я новичок и в науке о данных, и в PythonЯ совершенно потерян.

Для набора данных Iris первые 50 строк представляют собой один вид цветов, следующие 50 - второй вид, а последние 50 - третий вид цветов.Как мне написать, чтобы я получил например.50% тестовых данных от каждого третьего?Я не могу понять, где и как они сделали это в вопросе, связанном выше.Если бы вы могли объяснить это, как вы, ребенку, я был бы очень признателен.

И представляет ли x_train 4 различных свойства цветка, а y_train - тот цветок, который у нас есть?

Заранее спасибо!

РЕДАКТИРОВАТЬ: я пробовал это

x_train, x_test, y_train, y_test = train_test_split (x, y, test_size = 0.5, random_state = 65)

но разве это справедливый способ сделать это?Я выбирал разные числа случайного состояния, пока не получил ровно 25 цветов каждого типа в тестовом и тренировочном наборе (это всегда было около 1/3, но с 65 я получил это точно).Это похоже на обман, хотя ...

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

sklearn.model_selection.train_test_split

имеет shuffle и stratify параметров.

по умолчанию shuffle = True и stratify=None

Если вы имеете дело с регрессией, train_test_split по умолчанию перетасует данные для вас.

Если вы имеете дело с классификацией, вам необходимо указать stratify = << your response variable >>

Для получения дополнительной информации, пожалуйста,проверьте документацию

Спасибо

0 голосов
/ 07 октября 2018

Вы можете использовать здесь StratifiedKFold: http://scikit -learn.org / stable / modules / generate / sklearn.model_selection.StratifiedKFold.html

Кроме того, train_test_split имеет стратифицировать параметр: http://scikit -learn.org / stable / modules / Генерируемый / sklearn.model_selection.train_test_split.html # sklearn.model_selection.train_test_split

Пингуйте меня, если вам нужноопишите это на примере.

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