Die Vorhersage, wie lange ein scikit-learn-Klassifikation wird dauern
Gibt es eine Möglichkeit, vorherzusagen, wie lange es dauern wird, führen Sie einen Klassifizierer von sci-kit lernen Sie, basierend auf den Parametern und datasets? Ich weiß, ziemlich meta, richtig?
Einige Klassifikatoren/parameter-Kombinationen sind Recht schnell, und manche nehmen so lange, dass ich schließlich nur noch den Prozess zu beenden. Ich möchte eine Möglichkeit im Vorfeld abschätzen, wie lange es dauern wird.
Alternativ würde ich akzeptieren einige Hinweise, wie die Festlegung gemeinsamer Parameter zur Reduzierung der Laufzeit.
- Schau mal auf die Komplexität des Algorithmus und sehen, für eine kleinere Stichprobe, wie viel Zeit es braucht?
- Danke für die Anregung. Ich habe versucht zu tun, aber es scheint, dass einige algorithmen skalieren etwas Linear, da die Daten wächst, und einige Maßstab mehr exponentiell. Das ist ein guter Vorschlag, und sicherlich besser als nichts, aber ich Frage mich, ob es ein einfacher oder mehr automatische Art als guess-and-check.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es sehr spezielle Klassen von Klassifikatoren oder Regressoren direkt melden die Verbleibende Zeit und der Fortschritt des Algorithmus (Anzahl der Iterationen, etc.). Die meisten dieser kann eingeschaltet werden, indem die Weitergabe
verbose=2
(keine hohe Zahl > 1) die option an den Konstruktor der einzelnen Modelle. Hinweis: dieses Verhalten ist nach sklearn-0.14. Frühere Versionen haben eine etwas andere ausführliche Ausgabe (dennoch nützlich).Das beste Beispiel dafür ist
ensemble.RandomForestClassifier
oder ensemble.GradientBoostingClassifier`, dass print die Anzahl der Bäume gebaut, so weit, und die Verbleibende Zeit.Oder
Diese Fortschritte zu informieren ist ziemlich nützlich, um eine Schätzung der Gesamt-Zeit.
Dann gibt es andere Modelle wie SVMs, dass print die Anzahl der Optimierung Iterationen abgeschlossen, aber nicht direkt melden die Verbleibende Zeit.
Modelle wie lineare Modelle nicht bieten, eine solche Diagnose-Informationen so weit wie ich weiß.
Überprüfen Sie in diesem thread mehr wissen über das, was die Stufen bedeuten: scikit-learn passen Verbleibende Zeit
Wenn Sie mit IPython, können Sie erwägen, die Verwendung der eingebauten magischen Befehle wie %Zeit und %timeit
%Zeit - Zeit Ausführung eines Python-Anweisung oder Ausdruck. Die CPU und die Wanduhr mal gedruckt werden, und der Wert des Ausdrucks (falls vorhanden) wird zurückgegeben. Beachten Sie, dass unter Win32, ein system mit der Zeit immer gemeldet 0, da es nicht gemessen werden kann.
%timeit - Zeit der Ausführung eines Python-Anweisung oder Ausdruck, mit dem timeit-Modul.
Beispiel:
Referenzen:
https://ipython.readthedocs.io/en/stable/interactive/magics.html
http://scikit-learn.org/stable/developers/performance.html
Eigentlich sind wir arbeiten an einer Paket gibt Laufzeit Schätzungen von scikit-learn passt.
Würden Sie im Grunde führen Sie es richtig vor dem ausführen des algo.fit(X, y), um die Laufzeit-Abschätzung.
Hier ist ein einfaches Anwendungsbeispiel:
Fühlen Sie sich frei, um einen Blick zu nehmen!