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
yin 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_splitsStandardwert 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
shuffleTrue ist, beeinflusstrandom_statedie Reihenfolge der Indizes, was die Zufälligkeit jedes Folds für jede Klasse steuert. Andernfalls lassen Sierandom_statealsNone. Übergeben Sie eine Ganzzahl für reproduzierbare Ergebnisse über mehrere Funktionsaufrufe hinweg. Siehe Glossar.
Siehe auch
RepeatedStratifiedKFoldWiederholt 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"]iny = [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_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, 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.Beachten Sie, dass die Angabe von
yausreicht, um die Splits zu generieren, und dahernp.zeros(n_samples)als Platzhalter fürXanstelle 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_stateauf eine Ganzzahl setzen.
Galeriebeispiele#
Rekursive Merkmalseliminierung mit Kreuzvalidierung
Visualisierung des Kreuzvalidierungsverhaltens in scikit-learn
Testen der Signifikanz eines Klassifikations-Scores mit Permutationen
Receiver Operating Characteristic (ROC) mit Kreuzvalidierung
Auswirkung der Änderung des Schwellenwerts für Self-Training