2013-01-23 4 views
12

Sono interessato ai set di dati python mining troppo grandi per stare nella RAM ma seduti in un singolo HD.Strumenti Python per il calcolo out-of-core/data mining

Capisco che posso esportare i dati come file hdf5, utilizzando pytables. Inoltre, lo numexpr consente alcuni calcoli fuori dalla base.

Cosa verrà dopo? Mini-batching quando possibile, e basandosi sui risultati dell'algebra lineare per decomporre il calcolo quando non è possibile utilizzare mini-batching?

Oppure ci sono alcuni strumenti di livello superiore che ho perso?

Grazie per intuizioni,

risposta

3

In sklearn 0.14 (che verrà rilasciato nei prossimi giorni), esiste un vero e proprio esempio di classificazione fuori dal nucleo dei documenti di testo.

penso che potrebbe essere un grande esempio per iniziare con:

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

Nella prossima release abbiamo estenderemo questo esempio con più classificatori e aggiungere la documentazione nel manuale d'uso.

NB: è possibile riprodurre questo esempio anche con 0.13, tutti gli elementi costitutivi erano già presenti.

3

Che cosa vuoi fare — può fare un esempio o due per favore?

numpy.memmap è facile —

creare una memoria-mappa per una matrice memorizzata in un file binario file di su disco.
I file mappati in memoria sono utilizzati per accedere a piccoli segmenti di grandi file su disco, senza leggere l'intero file in memoria. di NumPy memmap di sono oggetti array come ...

vedi anche numpy+memmap su SO.

Le persone scikit-learn sono molto ben informate, ma preferiscono domande specifiche.

+0

Grazie per la risposta Denis. Sembra che skilearn abbia strutture mini-batch. In realtà sto cercando il modo più razionale per affrontare l'apprendimento fuori dal core di una sotto mappa: ridurre le dimensioni. In particolare mi sforzo di comprendere i punti di forza relativi di hdf5, sql, nosql. – user17375

+0

La domanda di Zelazny7 sui flussi di dati di grandi dimensioni è migliore perché concreta e ottiene risposte migliori – denis

3

Ho una simile necessità di lavorare su sottomodalità: ridurre i set di dati dimensionati. Ho posto questa domanda su SO quando ho iniziato a studiare i panda di Python come seria alternativa a SAS: "Large data" work flows using pandas

La risposta presentata suggerisce di utilizzare l'interfaccia HDF5 dai panda per archiviare le strutture di dati dei panda direttamente sul disco. Una volta memorizzati, è possibile accedere ai dati in lotti e formare un modello in modo incrementale. Ad esempio, scikit-learn ha diverse classi che possono essere addestrate su pezzi incrementali di un set di dati. Un esempio si trova qui:

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

Ogni classe che implementa il metodo partial_fit può essere addestrato in modo incrementale. Sto ancora cercando di ottenere un flusso di lavoro fattibile per questi tipi di problemi e sarei interessato a discutere delle possibili soluzioni.