Software zum Erstellen eines Regressionsmodells mit 3,5 GB CSV auf einem PC mit wenig Arbeitsspeicher

Ich habe eine CSV-Datei mit 3,5 GB Daten (ca. 8 Millionen Zeilen und 86 Spalten) und ich muss ein Regressionsmodell für dieses Dataset erstellen.

Die Sache ist, dass der Versuch, die CSV-Datei mit Pandas zu lesen, und anschließend jede Art von Operation darauf auszuführen (selbst nur die Anzahl der Zeilen zu nehmen), eine lächerliche Zeit in Anspruch nimmt. Wenn man bedenkt, dass ich die Daten visualisieren muss, um zu wissen, wie sie aussehen, sie dann vorverarbeiten usw. usw., glaube ich nicht wirklich, dass es machbar ist, dies so zu tun, wie ich es immer für Dateien mit 50-100 MB getan habe. isch.

Ich habe versucht, in das Multiprocessing -Modul von Python zu schauen , aber obwohl es mir geholfen hat, die Anzahl der Zeilen zu berechnen, sehe ich nicht, dass es mir bei den meisten anderen Dingen hilft, die ich tun muss (wie zum Beispiel das Erstellen des Modells).

Also, weiß jemand, wie ich das angehen soll? Ich mache es auf einem Python-Notebook.

In R gibt es einige Pakete, die für den Umgang mit riesigen Datensätzen aus einzelnen Dateien erstellt wurden, siehe diesen Beitrag
Der offensichtliche Vorschlag wäre, es auf einem anderen PC zu tun. Können Sie das tun? Und ist das nur einmalig oder kommt es immer wieder vor?

Antworten (2)

Werfen Sie einen Blick in die Dask-Bibliothek. ( http://dask.pydata.org/en/latest/ ). Es erweitert die DataFrames und Numpy-Arrays von Pandas für Berechnungen, die größer als der Speicher sind.

Hier ist ein Blogbeitrag über die Verwendung von Dask mit scikit-learn: https://www.continuum.io/blog/developer-blog/dask-and-scikit-learn-3-part-tutorial

Sieht ganz nett aus, werde ich mir auf jeden Fall anschauen!

Mehrere Vorschläge:

  • Löschen Sie Zeilen, die Sie nicht benötigen. Vielleicht sind einige für das Modell nicht relevant
  • Löschen Sie Spalten, die Sie nicht benötigen, z. B. solche, die konstant oder mit geringer Varianz oder einfach nicht wichtig sind
  • Ändern Sie alle int64s und Floats in int8 (WENN sie passen)
  • Nehmen Sie eine Stichprobe von Zeilen
  • Verwenden Sie Feature-Reduktion, zB PCA, wenn Sie können; oder eine univariate Methode wie chi2
Obwohl ich anerkenne, dass dies nette Dinge sind, um meine Daten kleiner zu machen, ist es immer noch etwas, das einige Zeit in Anspruch nehmen wird, um ausgeführt zu werden. Ich hatte gehofft, vor dieser Phase etwas tun zu können, genau damit ich die Vorverarbeitung beschleunigen kann. Aus diesem Grund habe ich überlegt, die Cloud zu verwenden, war mir aber nicht sicher, was ich genau verwenden sollte.