permutation_test_score#

sklearn.model_selection.permutation_test_score(estimator, X, y, *, groups=None, cv=None, n_permutations=100, n_jobs=None, random_state=0, verbose=0, scoring=None, params=None)[Quelle]#

Bewertet die Signifikanz eines kreuzvalidierten Scores durch Permutationen.

Permutiert Zielvariablen, um "zufällige Daten" zu generieren und den empirischen p-Wert gegen die Nullhypothese zu berechnen, dass Merkmale und Zielvariablen unabhängig sind.

Der p-Wert stellt den Anteil der zufälligen Datensätze dar, bei denen der Schätzer so gut oder besser abgeschnitten hat als bei den Originaldaten. Ein kleiner p-Wert deutet darauf hin, dass eine echte Abhängigkeit zwischen Merkmalen und Zielvariablen besteht, die vom Schätzer genutzt wurde, um gute Vorhersagen zu liefern. Ein großer p-Wert kann auf mangelnde echte Abhängigkeit zwischen Merkmalen und Zielvariablen oder darauf zurückzuführen sein, dass der Schätzer die Abhängigkeit nicht nutzen konnte, um gute Vorhersagen zu liefern.

Mehr dazu im Benutzerhandbuch.

Parameter:
estimatorEstimator-Objekt, das ‘fit’ implementiert

Das zu verwendende Objekt zur Anpassung der Daten.

Xarray-ähnlich, mindestens 2D

Die zu fittenden Daten.

yarray-ähnlich der Form (n_samples,) oder (n_samples, n_outputs) oder None

Die Zielvariable, die im Falle von überwachtem Lernen vorhergesagt werden soll.

groupsarray-like of shape (n_samples,), default=None

Labels zur Einschränkung der Permutation innerhalb von Gruppen, d. h. die y-Werte werden unter Stichproben mit demselben Gruppenidentifikator permutiert. Wenn nicht angegeben, werden die y-Werte über alle Stichproben permutiert.

Wenn ein gruppierter Kreuzvalidierer verwendet wird, werden die Gruppenlabels auch an die split-Methode des Kreuzvalidierers übergeben. Der Kreuzvalidierer verwendet sie zur Gruppierung der Stichproben während der Aufteilung des Datensatzes in Trainings-/Testsets.

Geändert in Version 1.6: groups kann nur übergeben werden, wenn das Metadaten-Routing nicht über sklearn.set_config(enable_metadata_routing=True) aktiviert ist. Wenn das Routing aktiviert ist, übergeben Sie groups zusammen mit anderen Metadaten über das Argument params. Z. B.: permutation_test_score(..., params={'groups': groups}).

cvint, Kreuzvalidierungsgenerator oder iterierbar, Standardwert=None

Bestimmt die Strategie der Kreuzvalidierungsaufteilung. Mögliche Eingaben für cv sind

  • None, um die Standard-5-fach-Kreuzvalidierung zu verwenden,

  • int, um die Anzahl der Folds in einem (Stratified)KFold anzugeben,

  • CV-Splitter,

  • Eine iterierbare Liste, die (Trainings-, Test-) Splits als Indizes-Arrays liefert.

Für int/None-Eingaben wird, wenn der Schätzer ein Klassifikator ist und y entweder binär oder multiklasse ist, StratifiedKFold verwendet. In allen anderen Fällen wird KFold verwendet. Diese Splitter werden mit shuffle=False instanziiert, sodass die Splits über die Aufrufe hinweg gleich sind.

Siehe Benutzerhandbuch für die verschiedenen Kreuzvalidierungsstrategien, die hier verwendet werden können.

Geändert in Version 0.22: Standardwert für cv, wenn None, geändert von 3-fach auf 5-fach.

n_permutationsint, Standard=100

Anzahl der Permutationen von y.

n_jobsint, default=None

Anzahl der parallel auszuführenden Jobs. Das Training des Schätzers und die Berechnung des kreuzvalidierten Scores werden über die Permutationen parallelisiert. None bedeutet 1, es sei denn, es befindet sich in einem joblib.parallel_backend-Kontext. -1 bedeutet die Verwendung aller Prozessoren. Siehe Glossar für weitere Details.

random_stateint, RandomState-Instanz oder None, Standard=0

Geben Sie eine Ganzzahl an, um reproduzierbare Ausgaben für die Permutation von y-Werten zwischen Stichproben zu erhalten. Siehe Glossar.

verboseint, default=0

Die Ausführlichkeitsstufe.

scoringstr oder callable, Standardwert=None

Bewertungsmethode, die zur Auswertung der Vorhersagen auf dem Validierungsset verwendet wird.

paramsdict, Standardwert=None

Parameter, die an die fit-Methode des Schätzers, des Scorers und des CV-Splitters übergeben werden.

  • Wenn enable_metadata_routing=False (Standard): Parameter, die direkt an die fit-Methode des Estimators übergeben werden.

  • Wenn enable_metadata_routing=True: Sicher weitergeleitete Parameter an die fit-Methode des Schätzers, das cv-Objekt und den scorer. Einzelheiten siehe Metadaten-Routing-Benutzerhandbuch.

Hinzugefügt in Version 1.6.

Gibt zurück:
scorefloat

Der tatsächliche Score ohne Permutation der Zielvariablen.

permutation_scoresArray der Form (n_permutations,)

Die für jede Permutation erzielten Scores.

pvaluefloat

Der p-Wert, der die Wahrscheinlichkeit annähert, dass der Score zufällig erzielt wird. Dieser wird berechnet als

(C + 1) / (n_permutations + 1)

Wobei C die Anzahl der Permutationen ist, deren Score >= dem tatsächlichen Score ist.

Der bestmögliche p-Wert ist 1/(n_permutations + 1), der schlechteste ist 1,0.

Anmerkungen

Diese Funktion implementiert Test 1 in

Ojala und Garriga. Permutation Tests for Studying Classifier Performance. The Journal of Machine Learning Research (2010) Band 11

Beispiele

>>> from sklearn.datasets import make_classification
>>> from sklearn.linear_model import LogisticRegression
>>> from sklearn.model_selection import permutation_test_score
>>> X, y = make_classification(random_state=0)
>>> estimator = LogisticRegression()
>>> score, permutation_scores, pvalue = permutation_test_score(
...     estimator, X, y, random_state=0
... )
>>> print(f"Original Score: {score:.3f}")
Original Score: 0.810
>>> print(
...     f"Permutation Scores: {permutation_scores.mean():.3f} +/- "
...     f"{permutation_scores.std():.3f}"
... )
Permutation Scores: 0.505 +/- 0.057
>>> print(f"P-value: {pvalue:.3f}")
P-value: 0.010