Speicher effizienter Weg, um split große numpy-array zu trainieren und zu testen

Ich habe eine große numpy-array und wenn ich laufen scikit lernen ist train_test_split split das array in Trainings-und Testdaten, die ich ausführen immer in den Arbeitsspeicher-Fehler. Was wäre ein mehr-Speicher-effiziente Methode der Aufspaltung in Schulen und zu testen, und warum das train_test_split die das verursachen?

Den Folgen code führt zu einem Arbeitsspeicher-Fehler und verursacht einen Absturz

import numpy as np
from sklearn.cross_validation import train_test_split

X = np.random.random((10000,70000))
Y = np.random.random((10000,))
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.33, random_state=42)
  • Dies kann von Interesse sein - numpy-discussion.10968.n7.nabble.com/Huge-arrays-td25254.html
  • funktioniert für mich auf einer 64G-Maschine, hatte große Probleme auf eine 8G laptop (hätte wahrscheinlich die led für memory-Fehler, wenn ich das nicht hätte getötet it). Das Problem ist wahrscheinlich, dass die Zug - /test-split unausweichlich Kopien der Daten, denn es nutzt fancy indexing, in der Erwägung, dass in einer situation ohne Randomisierung, z.B. KFold, könnte dies vermieden werden (aber man müsste code, der split sich selbst, weil sklearn ist KFold auch Kopien). Wenn Sie brauchen, Randomisierung, kann man inplace mischen Sie die Daten zuerst.
InformationsquelleAutor user1879926 | 2015-07-17
Schreibe einen Kommentar