Инструменты Python для внеочередного вычисления/интеллектуального анализа данных
Меня интересуют python mining
массивы данных, слишком большие, чтобы сидеть в ОЗУ, но сидеть в одном HD.
Я понимаю, что я могу экспортировать данные в виде hdf5
файлов, используя pytables
. Кроме того, numexpr
допускает некоторые базовые вычисления вне ядра.
Что будет дальше? Мини-дозирование, когда это возможно, и полагаться на результаты линейной алгебры, чтобы разложить вычисление, когда мини-пакет не может быть использован?
Или есть некоторые инструменты более высокого уровня, которые я пропустил?
Спасибо за понимание,
Ответы
Ответ 1
В sklearn 0.14 (который будет выпущен в ближайшие дни) есть полномасштабный пример классической классификации текстовых документов.
Я думаю, что это может быть отличный пример для начала:
http://scikit-learn.org/dev/auto_examples/applications/plot_out_of_core_classification.html
В следующем выпуске мы расширим этот пример с помощью большего количества классификаторов и добавим документацию в руководство пользователя.
NB: вы можете воспроизвести этот пример с 0,13, все строительные блоки уже были там.
Ответ 2
Что именно вы хотите сделать — вы можете привести пример или два, пожалуйста?
numpy.memmap легко:
Создайте карту памяти для массива, хранящегося в двоичном файле на диске.
Файлы с отображением памяти используются для доступа к небольшим сегментам больших файлы на диске, не читая весь файл в памяти. Numpy-х memmap - объекты типа массива...
см. также numpy + memmap на SO.
scikit-learn люди очень хорошо осведомлены, но предпочитают конкретные вопросы.
Ответ 3
У меня есть аналогичная потребность в работе с базами данных с уменьшением размера карты. Я задал этот вопрос на SO, когда начал изучать python pandas как серьезную альтернативу SAS: "Большие данные" рабочие потоки с использованием pandas
В представленном ответе предлагается использовать интерфейс HDF5 от pandas для хранения структур данных pandas непосредственно на диске. После сохранения вы можете получить доступ к данным в партиях и поэтапно подготовить модель. Например, scikit-learn имеет несколько классов, которые можно обучить инкрементальным частям набора данных. Один из таких примеров можно найти здесь:
http://scikit-learn.org/0.13/modules/generated/sklearn.linear_model.SGDClassifier.html
Любой класс, реализующий метод partial_fit
, может обучаться постепенно. Я все еще пытаюсь получить жизнеспособный рабочий процесс для этих проблем и буду заинтересован в обсуждении возможных решений.