2015-08-11 4 views
14

In Sklearn kann GridSearchCV eine Pipeline als Parameter verwenden, um den besten Schätzer durch Kreuzvalidierung zu finden. Jedoch ist die übliche Kreuzvalidierung wie folgt aus: enter image description hereWie man Walk-Forward-Tests in Sklearn implementieren?

zu überqueren eine Zeitreihendaten zu validieren, die Trainings- und Testdaten werden häufig wie folgt aufgeteilt: enter image description here

Das heißt, sollten die Testdaten werden immer vor Trainingsdaten.

Mein Gedanke ist:

  1. schreiben meine eigene Version Klasse von k-fach und weitergeben GridSearchCV so kann ich die Bequemlichkeit der Pipeline genießen. Das Problem ist, dass es schwierig erscheint, GridSearchCV bestimmte Trainings- und Testdaten zu verwenden.

  2. Schreiben Sie eine neue Klasse GridSearchWalkForwardTest, die GridSearchCV ähnlich ist, studiere ich den Quellcode grid_search.py ​​und finde es ein wenig kompliziert.

Jeder Vorschlag ist willkommen.

+0

Siehe https://github.com/scikit-learn/scikit-learn/issues/3202 – yangjie

Antwort

1

Meine Meinung ist, dass Sie versuchen sollten, Ihren eigenen GridSearchWalkForwardTest zu implementieren. Ich habe einmal GridSearch benutzt, um das Training zu machen und habe den gleichen GridSearch selbst implementiert und ich habe nicht die gleichen Ergebnisse erzielt, obwohl ich sollte.

Was ich am Ende gemacht habe, ist meine eigene Funktion. Sie haben mehr Kontrolle über das Training und Test-Set und Sie haben mehr Kontrolle über die Parameter, die Sie trainieren.

2

Ich denke, Sie könnten eine Time Series Split entweder anstelle Ihrer eigenen Implementierung oder als Grundlage für die Implementierung einer CV-Methode verwenden, die genau ist, wie Sie es beschreiben.

Nach dem Graben ein bisschen scheint es, als ob jemand eine max_train_size zu der TimeSeriesSplit in this PR hinzugefügt, die scheint, wie es tut, was Sie wollen.

Verwandte Themen