Как на самом деле работает List :: Util 'shuffle'?

В настоящее время я работаю над созданием классификатора с использованием c5.0. У меня есть набор данных из 8000 записей, и каждая запись имеет свой собственный идентификационный номер (1-8000). При тестировании производительности классификатора мне пришлось сделать 5 наборов разбиений 10:90 (обучающие данные: тестовые данные). Конечно, никакие обучающие примеры не могут появиться снова в тестовых примерах, и дубликаты не могут появиться ни в одном наборе.

Чтобы решить проблему случайного выбора примеров для обучающих данных и убедиться, что они не могут быть выбраны для тестовых данных, я разработал ужасно медленный метод;

  • заполните файл числами от 1-8000 до отдельные строки.

  • случайным образом выберите номер строки (из диапазона 1-8000) и используйте содержимое строки в качестве идентификатора обучающего примера.

  • запишите все невыбранные числа в новый файл

  • уменьшить диапазон генератора случайных чисел на 1

  • повторить

Затем все невыбранные числа используются в качестве тестовых данных. Это работает, но медленно. Чтобы ускорить процесс, я мог бы использовать List :: Util 'shuffle', чтобы просто случайным образом перемешать и массив этих чисел. Но насколько случайным является «перемешивание»? Важно поддерживать такой же уровень точности. Извините за эссе, но кто-нибудь знает, как «перемешать»? действительно работает. Любая помощь была бы просто замечательной

5
задан Sinan Ünür 2 March 2011 в 13:37
поделиться