2013-01-23 11 views
12

Interesuje mnie python mining zestawów danych zbyt dużych, aby usiąść w pamięci RAM, ale siedząc w jednym HD.Pythonowe narzędzia do obliczeń out-of-core/data mining

Rozumiem, że mogę wyeksportować dane jako pliki hdf5, używając pytables. Również numexpr pozwala na podstawowe podstawowe obliczenia.

Co będzie dalej? Mini-batchowanie, gdy jest to możliwe, i poleganie na algebrze liniowej powoduje dekompozycję obliczeń, gdy nie można zastosować mini-grupowania?

Czy są jakieś narzędzia wyższego poziomu, które przeoczyłem?

Dzięki za spostrzeżenia,

Odpowiedz

3

W sklearn 0.14 (zostanie wydany w najbliższych dniach) znajduje się pełnoprawny przykład pozafirmowej klasyfikacji dokumentów tekstowych.

myślę, że może to być świetny przykład na początek:

http://scikit-learn.org/dev/auto_examples/applications/plot_out_of_core_classification.html

W następnym wydaniu będziemy przedłużyć ten przykład z kilku klasyfikatorów i dodać dokumentację w instrukcji obsługi.

NB: możesz odtworzyć ten przykład również z 0.13, wszystkie klocki już tam były.

3

Co dokładnie chcesz zrobić — można podać przykład lub dwa proszę?

numpy.memmap jest łatwe —

Tworzenie pamięci-mapy do tablicy przechowywanej w binarnym pliku na dysku.
Pliki mapowane w pamięci są używane do uzyskiwania dostępu do małych segmentów dużych plików na dysku, bez odczytu całego pliku do pamięci. NumPy za memmap są obiekty array-like ...

zobaczyć również numpy+memmap na SO.

Ludzie mają dużą wiedzę, ale preferują konkretne pytania.

+0

Dzięki za odpowiedź Denis. Wygląda na to, że skilearn ma mini-batching facilities. Właściwie szukam najbardziej racjonalnego sposobu radzenia sobie z pozaprocesowym uczeniem się mapy podrzędnej - zmniejszania rozmiaru. Szczególnie staram się zrozumieć względne zalety hdf5, sql, nosql. – user17375

+0

Pytanie Zelazny7 o duże ilości danych i pracy jest lepsze, ponieważ jest konkretne i dostaje lepsze odpowiedzi – denis

3

Mam podobną potrzebę pracy nad mapą podrzędną - zmniejsz rozmiar zestawów danych. Postawiłem to pytanie na SO, gdy zacząłem badać Pandy Pythona jako poważną alternatywę dla SAS: "Large data" work flows using pandas

Przedstawiona tam odpowiedź sugeruje użycie interfejsu HDF5 z pand do przechowywania struktur danych pand bezpośrednio na dysku. Po zapisaniu można uzyskać dostęp do danych w partiach i stopniowo szkolić model. Na przykład, scikit-learn ma kilka klas, które można szkolić na przyrostowych fragmentach zbioru danych. Jednym z takich przykładów jest tutaj:

http://scikit-learn.org/0.13/modules/generated/sklearn.linear_model.SGDClassifier.html

Każda klasa, która implementuje metodę partial_fit może być przeszkoleni stopniowo. Nadal staram się uzyskać wykonalny przepływ pracy w przypadku tego rodzaju problemów i byłbym zainteresowany omówieniem możliwych rozwiązań.