sklearn und große datasets
Ich habe einen Datensatz von 22 GB. Ich möchte, um es zu verarbeiten auf meinem laptop. Natürlich kann ich nicht laden, es im Gedächtnis.
Ich benutze eine Menge sklearn aber für viel kleinere Datensätze.
In diesen Situationen ist der klassische Ansatz sollte sein etwas wie.
Lesen nur ein Teil der Daten -> Teilweise trainieren Sie Ihre estimator -> Daten löschen -> Lesen Sie weitere Artikel des Daten -> weiter zu trainieren und Ihre Schätzer.
Habe ich gesehen, dass einige sklearn Algorithmus die partielle fit-Methode, sollte es uns zu trainieren, der Schätzer mit verschiedenen teilproben der Daten.
Nun Frage ich mich gibt es einen einfachen Grund, warum das in sklearn?
Ich bin auf der Suche nach so etwas wie
r = read_part_of_data('data.csv')
m = sk.my_model
`for i in range(n):
x = r.read_next_chunk(20 lines)
m.partial_fit(x)
m.predict(new_x)
Vielleicht sklearn ist nicht das richtige Werkzeug für diese Art von Dingen?
Lassen Sie es mich wissen.
- Siehe Verwandte: stackoverflow.com/questions/17017878/..., je nach Aufgabe, sollte es möglich sein
- Ich habe einige Beispiele für Situationen mit zu vielen Variablen. Aber was ist, wenn wir zu viele Proben?
- Ich bin kein Experte, aber ich würde denken, es sollte keine Rolle spielen, Ihr Modell trainiert wird an den ein-und es sollte nur die params/GEWICHTE gespeichert sind. Dies ist anders, wenn Sie einen Entscheidungsbaum als würde dieser Anstieg in der Größe so erhöhen Sie die Anzahl der Parameter und wahrscheinlich sample-Größen.
- das eigentliche problem ist, dass ich kann nicht laden Sie die csv-Datei, weil es zu groß ist
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke sklearn ist gut für größere Daten. Wenn Sie Ihre gewählten algorithmen unterstützen partial_fit oder ein online-Lern-Ansatz, dann sind Sie auf dem richtigen Weg bist. Eine Sache zu beachten ist, dass Ihr chunk-Größe kann Ihren Erfolg beeinflussen.
Dieser link nützlich sein kann...
Arbeiten mit big data in python und numpy, nicht genug ram, so sparen Sie teilweise Ergebnisse, die auf der disc?
Ich bin damit einverstanden, dass h5py ist nützlich, aber Sie können wünschen, verwenden Sie tools, die bereits in Ihrem Köcher.
Andere Sache, die Sie tun können, ist, um nach dem Zufallsprinzip wählen, ob oder nicht zu halten, eine Zeile in der csv-Datei...und speichern Sie das Ergebnis ein .npy-Datei, so lädt es schneller. Auf diese Weise erhalten Sie eine Stichprobe Ihrer Daten, damit Sie anfangen zu spielen mit ihm, mit allen algorithmen,...und befassen sich mit den größeren Daten-Problem auf dem Weg(oder gar nicht! manchmal ist ein sample mit einem guten Ansatz ist gut genug, je nachdem, was Sie wollen).
Ich habe mehrere scikit-learn-Klassifikatoren mit out-of-core-Fähigkeiten zu trainieren lineare Modelle: Stochastische Gradient, Perceptron und Passiv Aggressiv und auch Multinomial Naive Bayes auf Kaggle Datensatz von über 30Gb. Alle diese Klassen teilen sich die partial_fit Methode, die Sie erwähnen. Einige Verhalten sich besser als andere obwohl.
Finden Sie die Methodologie, die Fallstudien und einige gute Ressourcen in diesem post:
http://www.opendatascience.com/blog/riding-on-large-data-with-scikit-learn/
Möchten Sie vielleicht werfen Sie einen Blick auf Dask oder Graphlab
http://dask.pydata.org/en/latest/
https://turi.com/products/create/
Sind Sie ähnlich wie pandas aber die Arbeit an großen Maßstab Daten (out-of-core-dataframes). Das problem mit pandas ist alle Daten passen in den Speicher.
Beide frameworks verwendet werden können, mit scikit lernen. Laden Sie 22 GB Daten in Dask oder SFrame, dann verwenden Sie mit sklearn.
Ich finde es interessant, dass Sie gewählt haben, um die Verwendung von Python für die statistische Analyse eher als R aber, ich würde anfangen, indem Sie meine Daten in ein format, dass kann Umgang mit großen Datenmengen. Die python h5py Paket ist fantastisch für diese Art von storage - ermöglicht sehr schnellen Zugriff auf Ihre Daten. Sie müssen chunk, können Sie Ihre Daten in angemessenen Größen sagen 1 Millionen-element-Blöcken z.B. 20 Spalten x 50.000 Zeilen schreiben jedes Stück, das H5-Datei. Als Nächstes müssen Sie überlegen, welche Art von Modell, das Sie laufen - was Sie noch nicht wirklich festgelegt.
Ist die Tatsache, dass Sie wahrscheinlich haben, um schreiben Sie den Algorithmus für die Modell-und die machine-learning-cross-Validierung, da die Daten groß ist. Starten Sie durch das schreiben eines Algorithmus zum zusammenfassen der Daten, so dass Sie wissen, was Sie auf der Suche bin. Wenn Sie dann entscheiden, welches Modell Sie möchten, zu laufen, werden Sie brauchen, um darüber nachzudenken, was die Kreuzvalidierung wird. Setzen Sie sich in eine "Spalte" in jedes Stück der Daten, dass bedeutet, die Validierung festlegen, die jede Zeile gehört. Sie wählen viele beschriften Sie jedes Stück zu einem bestimmten Validierung festgelegt.
Als Nächstes werden Sie brauchen, um zu schreiben eine Karte reduzieren Stil Algorithmus zu betreiben Sie Ihr Modell für die Validierung von Teilmengen. Die alternative ist einfach zu führen Modelle auf jedes Stück von jedem der Validierung festgelegt und Durchschnitt das Ergebnis (man beachte die theoretische Richtigkeit dieses Ansatzes).
Halte Sie mit spark, oder R und rhdf5 oder etwas ähnliches. Ich habe noch nicht geliefert, jeder code, denn dies ist ein Projekt, anstatt nur eine einfache Codierung in Frage.