Разделение наборов данных на тестовые и обучающие данные

У меня есть набор данных с k примерами, и я хочу разделить его на m наборов. Как мне это сделать программно. Например, если k = 5 и m = 2, следовательно, 5/2 = 2,5 Как мне разбить его на 2 и 3, а не на 2, 2 и 1? Точно так же, если k = 10 и m = 3, я хочу, чтобы он был разделен на 3, 3 и 4, но не на 3, 3, 3 и 1.


person Amey Kelkar    schedule 14.07.2015    source источник


Ответы (1)


Обычно такая функциональность встроена в инструменты. Но, предполагая, что ваши наблюдения независимы, просто настройте генератор случайных чисел и сделайте что-то вроде:

for i = 1 to k do;
    set r = rand();
    if r < 0.5 then data[i].which = 'set1'
    else data[i].which = 'set2'

Вы можете расширить это для любого количества наборов и вероятностей.

Для примера, где k = 5, вы могли бы получить все строки в одном наборе (я думаю о 3% времени). Однако смысл разделения данных заключается в работе с большими объемами данных. Если у вас всего 5 или 10 строк, то разделение ваших наблюдений на разные разделы, вероятно, не лучший вариант.

person Gordon Linoff    schedule 14.07.2015