StratifiedKFold#

class sklearn.model_selection.StratifiedKFold(n_splits=5, *, shuffle=False, random_state=None)[Quelle]#

Klassenweiser stratifizierter K-Fold Kreuzvalidierer.

Stellt Trainings-/Testindizes zum Aufteilen von Daten in Trainings-/Testsets bereit.

Dieses Kreuzvalidierungsobjekt ist eine Variante von KFold, das stratifizierte Folds zurückgibt. Die Folds werden durch Beibehaltung des Prozentsatzes der Stichproben für jede Klasse in y in einem binären oder multiklassifizierten Klassifizierungsszenario erstellt.

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

Hinweis

Stratifizierung nach dem Klassenlabel löst eher ein technisches als ein statistisches Problem. Weitere Details finden Sie unter Cross-Validation-Iteratoren mit Stratifizierung basierend auf Klassenlabels.

Parameter:
n_splitsint, default=5

Anzahl der Folds. Muss mindestens 2 sein.

Geändert in Version 0.22: n_splits Standardwert von 3 auf 5 geändert.

shufflebool, default=False

Ob die Stichproben jeder Klasse vor dem Aufteilen in Batches gemischt werden sollen. Beachten Sie, dass die Stichproben innerhalb jedes Folds nicht gemischt werden.

random_stateint, RandomState-Instanz oder None, default=None

Wenn shuffle True ist, beeinflusst random_state die Reihenfolge der Indizes, was die Zufälligkeit jedes Folds für jede Klasse steuert. Andernfalls lassen Sie random_state als None. Übergeben Sie eine Ganzzahl für reproduzierbare Ergebnisse über mehrere Funktionsaufrufe hinweg. Siehe Glossar.

Siehe auch

RepeatedStratifiedKFold

Wiederholt Stratified K-Fold n Mal.

Anmerkungen

Die Implementierung ist darauf ausgelegt,

  • Testsets zu generieren, die alle dieselbe oder eine möglichst ähnliche Verteilung der Klassen enthalten.

  • Invariant gegenüber Klassenbezeichnungen zu sein: Das Umbenennen von y = ["Happy", "Sad"] in y = [1, 0] sollte die generierten Indizes nicht ändern.

  • Reihenfolgenabhängigkeiten in der Datensatzreihenfolge beizubehalten, wenn shuffle=False: Alle Stichproben der Klasse k in einem bestimmten Testset waren in y zusammenhängend oder in y durch Stichproben anderer Klassen als k getrennt.

  • Testsets zu generieren, bei denen sich die kleinsten und größten Elemente um höchstens eine Stichprobe unterscheiden.

Geändert in Version 0.22: Die vorherige Implementierung folgte nicht der letzten Einschränkung.

Beispiele

>>> import numpy as np
>>> from sklearn.model_selection import StratifiedKFold
>>> X = np.array([[1, 2], [3, 4], [1, 2], [3, 4]])
>>> y = np.array([0, 0, 1, 1])
>>> skf = StratifiedKFold(n_splits=2)
>>> skf.get_n_splits()
2
>>> print(skf)
StratifiedKFold(n_splits=2, random_state=None, shuffle=False)
>>> for i, (train_index, test_index) in enumerate(skf.split(X, y)):
...     print(f"Fold {i}:")
...     print(f"  Train: index={train_index}")
...     print(f"  Test:  index={test_index}")
Fold 0:
  Train: index=[1 3]
  Test:  index=[0 2]
Fold 1:
  Train: index=[0 2]
  Test:  index=[1 3]
get_metadata_routing()[Quelle]#

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)[Quelle]#

Gibt die Anzahl der Splitting-Iterationen zurück, die mit dem Parameter n_splits bei 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, groups=None)[Quelle]#

Generiert Indizes zum Aufteilen von Daten in Trainings- und Testsets.

Parameter:
Xarray-like der Form (n_samples, n_features)

Trainingsdaten, wobei n_samples die Anzahl der Stichproben und n_features die Anzahl der Merkmale ist.

Beachten Sie, dass die Angabe von y ausreicht, um die Splits zu generieren, und daher np.zeros(n_samples) als Platzhalter für X anstelle der tatsächlichen Trainingsdaten verwendet werden kann.

yarray-like von Form (n_samples,)

Die Zielvariable für Probleme des überwachten Lernens. Die Stratifizierung erfolgt basierend auf den y-Labels.

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.

Anmerkungen

Randomisierte CV-Splitter können bei jedem Aufruf von split unterschiedliche Ergebnisse liefern. Sie können die Ergebnisse identisch machen, indem Sie random_state auf eine Ganzzahl setzen.