TimeSeriesSplit#
- class sklearn.model_selection.TimeSeriesSplit(n_splits=5, *, max_train_size=None, test_size=None, gap=0)[source]#
Zeitreihen-Kreuzvalidierer.
Bietet Trainings-/Testindizes zum Aufteilen von zeitlich geordneten Daten, bei denen andere Kreuzvalidierungsmethoden ungeeignet sind, da sie zu einem Training mit zukünftigen Daten und einer Auswertung auf vergangenen Daten führen würden. Um vergleichbare Metriken über die Folds hinweg sicherzustellen, müssen die Samples gleichmäßig beabstandet sein. Sobald diese Bedingung erfüllt ist, deckt jeder Testsatz die gleiche Zeitdauer ab, während die Größe des Trainingssatzes Daten aus früheren Splits akkumuliert.
Dieses Kreuzvalidierungsobjekt ist eine Variante von
KFold. Im k-ten Split gibt es die ersten k Folds als Trainingssatz und den (k+1)-ten Fold als Testsatz zurück.Beachten Sie, dass im Gegensatz zu Standard-Kreuzvalidierungsmethoden aufeinanderfolgende Trainingssätze Obermengen derer sind, die ihnen vorausgehen.
Lesen Sie mehr im Benutzerhandbuch.
Zur Visualisierung des Kreuzvalidierungsverhaltens und zum Vergleich zwischen gängigen scikit-learn-Split-Methoden siehe Visualisierung des Kreuzvalidierungsverhaltens in scikit-learn
Hinzugefügt in Version 0.18.
- Parameter:
- n_splitsint, default=5
Anzahl der Splits. Muss mindestens 2 sein.
Geändert in Version 0.22:
n_splitsStandardwert von 3 auf 5 geändert.- max_train_sizeint, default=None
Maximale Größe für einen einzelnen Trainingssatz.
- test_sizeint, default=None
Wird verwendet, um die Größe des Testsatzes zu begrenzen. Standardmäßig ist dies
n_samples // (n_splits + 1), was der maximal zulässige Wert beigap=0ist.Hinzugefügt in Version 0.24.
- gapint, default=0
Anzahl der Samples, die vom Ende jedes Trainingssatzes vor dem Testsatz ausgeschlossen werden.
Hinzugefügt in Version 0.24.
Anmerkungen
Der Trainingssatz hat in der
i-ten Aufteilung eine Größe voni * n_samples // (n_splits + 1) + n_samples % (n_splits + 1)mit einem Testsatz von standardmäßign_samples//(n_splits + 1), wobein_samplesdie Anzahl der Samples ist. Beachten Sie, dass diese Formel nur gültig ist, wenntest_sizeundmax_train_sizeauf ihren Standardwerten belassen werden.Beispiele
>>> import numpy as np >>> from sklearn.model_selection import TimeSeriesSplit >>> X = np.array([[1, 2], [3, 4], [1, 2], [3, 4], [1, 2], [3, 4]]) >>> y = np.array([1, 2, 3, 4, 5, 6]) >>> tscv = TimeSeriesSplit() >>> print(tscv) TimeSeriesSplit(gap=0, max_train_size=None, n_splits=5, test_size=None) >>> for i, (train_index, test_index) in enumerate(tscv.split(X)): ... print(f"Fold {i}:") ... print(f" Train: index={train_index}") ... print(f" Test: index={test_index}") Fold 0: Train: index=[0] Test: index=[1] Fold 1: Train: index=[0 1] Test: index=[2] Fold 2: Train: index=[0 1 2] Test: index=[3] Fold 3: Train: index=[0 1 2 3] Test: index=[4] Fold 4: Train: index=[0 1 2 3 4] Test: index=[5] >>> # Fix test_size to 2 with 12 samples >>> X = np.random.randn(12, 2) >>> y = np.random.randint(0, 2, 12) >>> tscv = TimeSeriesSplit(n_splits=3, test_size=2) >>> for i, (train_index, test_index) in enumerate(tscv.split(X)): ... print(f"Fold {i}:") ... print(f" Train: index={train_index}") ... print(f" Test: index={test_index}") Fold 0: Train: index=[0 1 2 3 4 5] Test: index=[6 7] Fold 1: Train: index=[0 1 2 3 4 5 6 7] Test: index=[8 9] Fold 2: Train: index=[0 1 2 3 4 5 6 7 8 9] Test: index=[10 11] >>> # Add in a 2 period gap >>> tscv = TimeSeriesSplit(n_splits=3, test_size=2, gap=2) >>> for i, (train_index, test_index) in enumerate(tscv.split(X)): ... print(f"Fold {i}:") ... print(f" Train: index={train_index}") ... print(f" Test: index={test_index}") Fold 0: Train: index=[0 1 2 3] Test: index=[6 7] Fold 1: Train: index=[0 1 2 3 4 5] Test: index=[8 9] Fold 2: Train: index=[0 1 2 3 4 5 6 7] Test: index=[10 11]
Ein ausführlicheres Beispiel finden Sie unter Zeitbezogenes Feature Engineering.
- get_metadata_routing()[source]#
Holt das Metadaten-Routing dieses Objekts.
Bitte prüfen Sie im Benutzerhandbuch, wie der Routing-Mechanismus funktioniert.
- Gibt zurück:
- routingMetadataRequest
Ein
MetadataRequest, der Routing-Informationen kapselt.
- get_n_splits(X=None, y=None, groups=None)[source]#
Gibt die Anzahl der Splitting-Iterationen zurück, die mit dem Parameter
n_splitsbei der Instanziierung des Kreuzvalidierers festgelegt wurden.- Parameter:
- Xarray-like von Shape (n_samples, n_features), default=None
Immer ignoriert, existiert aus API-Kompatibilitätsgründen.
- yarray-like mit Form (n_samples,), default=None
Immer ignoriert, existiert aus API-Kompatibilitätsgründen.
- groupsarray-like of shape (n_samples,), default=None
Immer ignoriert, existiert aus API-Kompatibilitätsgründen.
- Gibt zurück:
- n_splitsint
Gibt die Anzahl der Teilungsschritte im Kreuzvalidierer zurück.
- split(X, y=None, groups=None)[source]#
Generiert Indizes zum Aufteilen von Daten in Trainings- und Testsets.
- Parameter:
- Xarray-like der Form (n_samples, n_features)
Trainingsdaten, wobei
n_samplesdie Anzahl der Stichproben undn_featuresdie Anzahl der Merkmale ist.- yarray-like mit Form (n_samples,), default=None
Immer ignoriert, existiert aus API-Kompatibilitätsgründen.
- groupsarray-like of shape (n_samples,), default=None
Immer ignoriert, existiert aus API-Kompatibilitätsgründen.
- Gibt:
- trainndarray
Die Trainingsset-Indizes für diese Teilung.
- testndarray
Die Testset-Indizes für diese Teilung.
Galeriebeispiele#
Visualisierung des Kreuzvalidierungsverhaltens in scikit-learn