StratifiedGroupKFold#
- class sklearn.model_selection.StratifiedGroupKFold(n_splits=5, shuffle=False, random_state=None)[Quelle]#
Klassenweiser stratifizierter K-Fold Iterator-Variante mit nicht überlappenden Gruppen.
Dieses Kreuzvalidierungsobjekt ist eine Variante von
StratifiedKFold, die versucht, stratifizierte Folds mit nicht überlappenden Gruppen zurückzugeben. Die Folds werden durch Beibehaltung des Prozentsatzes von Samples für jede Klasse inyin einer binären oder multiklassen Klassifizierungseinstellung erstellt.Jede Gruppe erscheint genau einmal im Test-Set über alle Folds hinweg (die Anzahl der unterschiedlichen Gruppen muss mindestens gleich der Anzahl der Folds sein).
Der Unterschied zwischen
GroupKFoldundStratifiedGroupKFoldist, dass ersteres versucht, balancierte Folds zu erstellen, so dass die Anzahl der unterschiedlichen Gruppen in jedem Fold ungefähr gleich ist, währendStratifiedGroupKFoldversucht, Folds zu erstellen, die den Prozentsatz der Samples jeder Klasse so weit wie möglich unter der Bedingung nicht überlappender Gruppen zwischen den Splits beibehalten.Mehr dazu 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.
- shufflebool, default=False
Ob die Samples jeder Klasse vor der Aufteilung in Batches gemischt werden sollen. Beachten Sie, dass die Samples innerhalb jedes Splits nicht gemischt werden. Diese Implementierung kann nur Gruppen mischen, die ungefähr die gleiche
yKlassenverteilung haben, es wird keine globale Mischung durchgeführt.- random_stateint oder RandomState-Instanz, Standard=None
Wenn
shuffleauf True gesetzt ist, beeinflusstrandom_statedie Reihenfolge der Indizes, was die Zufälligkeit jedes Folds für jede Klasse steuert. Andernfalls lassen Sierandom_stateaufNone. Übergeben Sie eine Ganzzahl für reproduzierbare Ergebnisse über mehrere Funktionsaufrufe hinweg. Siehe Glossar.
Siehe auch
StratifiedKFoldBerücksichtigt Klasseninformationen zur Erstellung von Folds, die Klassenverteilungen beibehalten (für binäre oder multiklassen Klassifizierungsaufgaben).
GroupKFoldK-Fold Iterator-Variante mit nicht überlappenden Gruppen.
Anmerkungen
Die Implementierung ist darauf ausgelegt,
das Verhalten von
StratifiedKFoldso weit wie möglich für triviale Gruppen zu imitieren (z. B. wenn jede Gruppe nur ein Sample enthält).klassenbezeichnungs-invariant zu sein: das Umbenennen von
y = ["Happy", "Sad"]zuy = [1, 0]sollte die generierten Indizes nicht ändern.basierend auf Samples so weit wie möglich zu stratifizieren, während die Einschränkung nicht überlappender Gruppen beibehalten wird. Das bedeutet, dass in einigen Fällen, wenn es eine kleine Anzahl von Gruppen mit einer großen Anzahl von Samples gibt, die Stratifizierung nicht möglich ist und das Verhalten nahe an
GroupKFoldliegt.
Beispiele
>>> import numpy as np >>> from sklearn.model_selection import StratifiedGroupKFold >>> X = np.ones((17, 2)) >>> y = np.array([0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0]) >>> groups = np.array([1, 1, 2, 2, 3, 3, 3, 4, 5, 5, 5, 5, 6, 6, 7, 8, 8]) >>> sgkf = StratifiedGroupKFold(n_splits=3) >>> sgkf.get_n_splits() 3 >>> print(sgkf) StratifiedGroupKFold(n_splits=3, random_state=None, shuffle=False) >>> for i, (train_index, test_index) in enumerate(sgkf.split(X, y, groups)): ... print(f"Fold {i}:") ... print(f" Train: index={train_index}") ... print(f" group={groups[train_index]}") ... print(f" Test: index={test_index}") ... print(f" group={groups[test_index]}") Fold 0: Train: index=[ 0 1 2 3 7 8 9 10 11 15 16] group=[1 1 2 2 4 5 5 5 5 8 8] Test: index=[ 4 5 6 12 13 14] group=[3 3 3 6 6 7] Fold 1: Train: index=[ 4 5 6 7 8 9 10 11 12 13 14] group=[3 3 3 4 5 5 5 5 6 6 7] Test: index=[ 0 1 2 3 15 16] group=[1 1 2 2 8 8] Fold 2: Train: index=[ 0 1 2 3 4 5 6 12 13 14 15 16] group=[1 1 2 2 3 3 3 6 6 7 8 8] Test: index=[ 7 8 9 10 11] group=[4 5 5 5 5]
- 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_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.
- set_split_request(*, groups: bool | None | str = '$UNCHANGED$') StratifiedGroupKFold[Quelle]#
Konfigurieren Sie, ob Metadaten für die Methode
splitangefordert werden sollen.Beachten Sie, dass diese Methode nur relevant ist, wenn dieser Schätzer als Unter-Schätzer innerhalb eines Meta-Schätzers verwendet wird und Metadaten-Routing mit
enable_metadata_routing=Trueaktiviert ist (siehesklearn.set_config). Bitte lesen Sie das Benutzerhandbuch, um zu erfahren, wie der Routing-Mechanismus funktioniert.Die Optionen für jeden Parameter sind
True: Metadaten werden angefordert und ansplitübergeben, wenn sie bereitgestellt werden. Die Anforderung wird ignoriert, wenn keine Metadaten bereitgestellt werden.False: Metadaten werden nicht angefordert und der Meta-Estimator übergibt sie nicht ansplit.None: Metadaten werden nicht angefordert und der Meta-Schätzer löst einen Fehler aus, wenn der Benutzer sie bereitstellt.str: Metadaten sollten mit diesem Alias an den Meta-Schätzer übergeben werden und nicht mit dem ursprünglichen Namen.
Der Standardwert (
sklearn.utils.metadata_routing.UNCHANGED) behält die bestehende Anforderung bei. Dies ermöglicht es Ihnen, die Anforderung für einige Parameter zu ändern und für andere nicht.Hinzugefügt in Version 1.3.
- Parameter:
- groupsstr, True, False, oder None, Standard: sklearn.utils.metadata_routing.UNCHANGED
Metadaten-Routing für den Parameter
groupsinsplit.
- Gibt zurück:
- selfobject
Das aktualisierte Objekt.
- split(X, y=None, 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_samplesdie Anzahl der Stichproben undn_featuresdie Anzahl der Merkmale ist.- yarray-like mit Form (n_samples,), default=None
Die Zielvariable für überwachte Lernprobleme.
- groupsarray-like of shape (n_samples,), default=None
Gruppenbeschriftungen für die Samples, die beim Aufteilen des Datensatzes in Trainings-/Testsets verwendet werden.
- Gibt:
- trainndarray
Die Trainingsset-Indizes für diese Teilung.
- testndarray
Die Testset-Indizes für diese Teilung.
Galeriebeispiele#
Visualisierung des Kreuzvalidierungsverhaltens in scikit-learn