2013-11-27 6 views
9

wurde versucht, den RF-Klassifikator auf einem Datensatz von ~ 50.000 Einträge mit 20 oder so Etiketten, die ich denke, sollte in Ordnung sein, aber ich stolpern über die folgenden bei dem Versuch zu passen ...Random Forest Classifier Segmentierung Fehler

Der Datensatz wurde über den TfidfVectorizer und dann TruncatedSVD mit n = 100 zur Reduzierung der Dimensionalität übergeben. RandomForestClassifier wird mit n_jobs = 1 und n_estimators = 10 ausgeführt, um den minimalen Punkt zu finden, an dem es funktioniert. Das System läuft mit 4 GB RAM und RF hat in der Vergangenheit auf einem ähnlichen Datensatz mit viel höheren Schätzern usw. gearbeitet. Scikit-learn läuft mit der aktuellen Version 0.14.1.

Irgendwelche Tipps?

Danke

+2

versuchen Sie es auf eine kleinere Menge von Daten oder eine niedrigere n. Sehen Sie nach, ob derselbe Fehler auftritt. Ich habe auch 4 GB RAM und ich habe zufällige Wälder auf einige ziemlich große Datensätze (nicht so groß) verwendet und habe diesen Fehler nie bekommen. Bitte sagen Sie mir, wenn Sie beim Absenken immer noch den gleichen Fehler erhalten. –

+5

Sie sollten dies auf [sckikit bug tracker] (https://github.com/scikit-learn/scikit-learn/issues) melden, wenn es reproduzierbar ist. –

+0

Ich würde versuchen, die Größe des von @RyanSaxe vorgeschlagenen Datensatzes zu reduzieren. Ich habe die RF auf Datensätze viel größer als das, aber hatte Zugriff auf eine sehr große Menge an RAM –

Antwort

1

Segfaults sind immer Bugs. Wenn ein malloc innerhalb RandomForest schlägt, dann sollte es gefangen werden, und es ist meine beste Vermutung, dass dies das ist, was dir passiert. Wie ein Kommentator bereits gesagt hat, sollten Sie dies dem RandomForest Bug Tracker melden. Aber die malloc ist wahrscheinlich scheitern wegen einer Speichermangel Bedingung, so reduzieren Sie Ihre Dimensionalität, reduzieren Sie Ihre Trainingsdatensatzgröße, erhalten mehr Speicher oder laufen auf einem System mit mehr Speicher.

+0

http://stackoverflow.com/questions/4220965/segmentation-fault-due-to-lack-of-memory-in-c – denson

0

Versuchen Sie, 'psutil' Bibliothek zu verwenden (Link: https://pypi.python.org/pypi/psutil/0.5.0). Dank dieser Bibliothek können Sie die Größe des verfügbaren Speichers Ihres Systems mit der folgenden Funktion monitorize:

psutil.phymem_usage() 

Dies wird Ihnen helfen, zu erkennen, ob Ihr System nicht genügend Speicher vorhanden ist oder wenn es sich um ein Problem des Code.