GroupShuffleSplit#
- class sklearn.model_selection.GroupShuffleSplit(n_splits=5, *, test_size=None, train_size=None, random_state=None)[Quelle]#
Shuffle-Group(s)-Out Kreuzvalidierungs-Iterator.
Bietet randomisierte Trainings-/Test-Indizes, um Daten gemäß einer von Dritten bereitgestellten Gruppe aufzuteilen. Diese Gruppeninformationen können verwendet werden, um beliebige domänenspezifische Stratifizierungen der Stichproben als Ganzzahlen zu kodieren.
Beispielsweise könnten die Gruppen das Sammeljahr der Stichproben sein und somit eine zeitbasierte Aufteilung für die Kreuzvalidierung ermöglichen.
Der Unterschied zwischen
LeavePGroupsOutundGroupShuffleSplitbesteht darin, dass erstere Splits unter Verwendung aller Teilmengen der Größepeindeutiger Gruppen generiert, währendGroupShuffleSpliteine vom Benutzer bestimmte Anzahl zufälliger Test-Splits generiert, jeder mit einem vom Benutzer bestimmten Bruchteil eindeutiger Gruppen.Zum Beispiel wäre eine weniger rechenintensive Alternative zu
LeavePGroupsOut(p=10)GroupShuffleSplit(test_size=10, n_splits=100).Im Gegensatz zu anderen Kreuzvalidierungsstrategien garantieren die zufälligen Splits nicht, dass die Testsets über alle Folds hinweg gegenseitig exklusiv sind, und können überlappende Stichproben enthalten. Dies ist jedoch bei ausreichend großen Datensätzen immer noch sehr wahrscheinlich.
Hinweis: Die Parameter
test_sizeundtrain_sizebeziehen sich auf Gruppen und nicht auf Stichproben wie inShuffleSplit.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
- Parameter:
- n_splitsint, default=5
Anzahl der Wiederholungen des Mischens und Aufteilens.
- test_sizefloat, int, default=None
Wenn float, sollte zwischen 0,0 und 1,0 liegen und den Anteil der Gruppen darstellen, die in den Test-Split einbezogen werden (aufgerundet). Wenn int, stellt dies die absolute Anzahl der Testgruppen dar. Wenn None, wird der Wert auf das Komplement der Trainingsgröße gesetzt. Wenn
train_sizeebenfalls None ist, wird er auf 0,2 gesetzt.- train_sizefloat oder int, Standardwert=None
Wenn float, sollte zwischen 0,0 und 1,0 liegen und den Anteil der Gruppen darstellen, die in den Trainings-Split einbezogen werden. Wenn int, stellt dies die absolute Anzahl der Trainingsgruppen dar. Wenn None, wird der Wert automatisch auf das Komplement der Testgröße gesetzt.
- random_stateint, RandomState-Instanz oder None, default=None
Steuert die Zufälligkeit der erzeugten Trainings- und Testindizes. Übergeben Sie eine Ganzzahl für reproduzierbare Ergebnisse über mehrere Funktionsaufrufe hinweg. Siehe Glossar.
Siehe auch
ShuffleSplitMischt Stichproben, um unabhängige Test-/Trainingssätze zu erstellen.
LeavePGroupsOutDer Trainingssatz lässt alle möglichen Teilmengen von
pGruppen aus.
Beispiele
>>> import numpy as np >>> from sklearn.model_selection import GroupShuffleSplit >>> X = np.ones(shape=(8, 2)) >>> y = np.ones(shape=(8, 1)) >>> groups = np.array([1, 1, 2, 2, 2, 3, 3, 3]) >>> print(groups.shape) (8,) >>> gss = GroupShuffleSplit(n_splits=2, train_size=.7, random_state=42) >>> gss.get_n_splits() 2 >>> print(gss) GroupShuffleSplit(n_splits=2, random_state=42, test_size=None, train_size=0.7) >>> for i, (train_index, test_index) in enumerate(gss.split(X, y, groups)): ... print(f"Fold {i}:") ... print(f" Train: index={train_index}, group={groups[train_index]}") ... print(f" Test: index={test_index}, group={groups[test_index]}") Fold 0: Train: index=[2 3 4 5 6 7], group=[2 2 2 3 3 3] Test: index=[0 1], group=[1 1] Fold 1: Train: index=[0 1 5 6 7], group=[1 1 3 3 3] Test: index=[2 3 4], group=[2 2 2]
- 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$') GroupShuffleSplit[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 von Form (n_samples,)
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.
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#
Visualisierung des Kreuzvalidierungsverhaltens in scikit-learn