Дополнительно
Как разделить данные в составе и тестах случайно?
У меня есть большой набор данных и хотите разбить его на обучение(50%) и набора для проверки(50%).
Скажем, у меня есть 100 примеров хранимых входного файла, каждая строка содержит один пример. Мне нужно выбрать 50 строк в качестве обучающего набора и 50 строк проверочного набора.
Моя идея сначала создать случайный список с длина 100 (диапазон значений от 1 до 100), а затем использовать первые 50 элементов, как номер строки 50 обучающих примеров. То же самое с тестирования.
Это может быть легко достигнуто в MATLAB
fid=fopen(datafile);
C = textscan(fid, '%s','delimiter', '\n');
plist=randperm(100);
for i=1:50
trainstring = C{plist(i)};
fprintf(train_file,trainstring);
end
for i=51:100
teststring = C{plist(i)};
fprintf(test_file,teststring);
end
Но как я могу достичь этой функции в Python? Я'м новичок в Python, и Дон'т знал, смогу ли я прочитать весь файл в массив, и выбрать определенные строки.
39
9
Это может быть сделано аналогично в помощью списков в Python, (обратите внимание, что весь список перемешиваются на месте).
Вы также можете использовать NumPy и обратно. Когда ваши данные хранятся в пакете numpy.ndarray:
sklearn.cross_validation
является устаревшим, начиная с версии 0.18, вместо этого вы должны использовать sklearn.model_selection` как показано нижеОтветить @Десмонд.вопрос Карро, я изменил лучший ответ следующим образом:
Код разбивает весь массив данных до 80% обучения и тестирования 20% данных
Вы можете попробовать этот подход
Следующее производит более общие K-кратная кросс-проверка шпагат. Ваш 50-50 разделение может быть достигнуто путем принятия к=2` ниже, все, что вам нужно-это выбрать один из двух перегородок, производимых. Примечание: Я не'т тестировал код, но я'м довольно уверен, что это должно работать.
Быстрое примечание для ответа от @Шубин sahayam
Если ваш размер списка-это четное число, вы не должны добавить 1 в приведенном ниже коде. Вместо этого, вы должны проверить размер списка, а затем определить, если вы должны добавить 1.
Ну во-первых там's нет такой вещи, как "блоки" в языке Python, Python использует списки и что делает разницу, я предлагаю вам использовать включает это довольно хорошая библиотека для Python, и это добавляет много Матлаб функции.Вы можете начать здесь numpy для пользователей Матлаб