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 in y in 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 GroupKFold und StratifiedGroupKFold ist, dass ersteres versucht, balancierte Folds zu erstellen, so dass die Anzahl der unterschiedlichen Gruppen in jedem Fold ungefähr gleich ist, während StratifiedGroupKFold versucht, 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 y Klassenverteilung haben, es wird keine globale Mischung durchgeführt.

random_stateint oder RandomState-Instanz, Standard=None

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

Siehe auch

StratifiedKFold

Berücksichtigt Klasseninformationen zur Erstellung von Folds, die Klassenverteilungen beibehalten (für binäre oder multiklassen Klassifizierungsaufgaben).

GroupKFold

K-Fold Iterator-Variante mit nicht überlappenden Gruppen.

Anmerkungen

Die Implementierung ist darauf ausgelegt,

  • das Verhalten von StratifiedKFold so 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"] zu y = [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 GroupKFold liegt.

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_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.

set_split_request(*, groups: bool | None | str = '$UNCHANGED$') StratifiedGroupKFold[Quelle]#

Konfigurieren Sie, ob Metadaten für die Methode split angefordert 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=True aktiviert ist (siehe sklearn.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 an split ü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 an split.

  • 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 groups in split.

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_samples die Anzahl der Stichproben und n_features die 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.