permutation_importance#

sklearn.inspection.permutation_importance(estimator, X, y, *, scoring=None, n_repeats=5, n_jobs=None, random_state=None, sample_weight=None, max_samples=1.0)[Quelle]#

Permutations-Wichtigkeit zur Merkmalsbewertung [BRE].

Der Estimator muss ein trainierter Estimator sein. X kann der Datensatz sein, der zum Trainieren des Estimators verwendet wurde, oder ein Hold-out-Set. Die Permutations-Wichtigkeit eines Merkmals wird wie folgt berechnet. Zuerst wird eine Basis-Metrik, definiert durch Scoring, auf einem (möglicherweise anderen) Datensatz evaluiert, der durch X definiert ist. Als Nächstes wird eine Merkmalsspalte aus dem Validierungsdatensatz permutiert und die Metrik wird erneut evaluiert. Die Permutations-Wichtigkeit ist definiert als die Differenz zwischen der Basis-Metrik und der Metrik nach der Permutation der Merkmalsspalte.

Lesen Sie mehr im Benutzerhandbuch.

Parameter:
estimatorobjekt

Ein Estimator, der bereits trainiert wurde und mit Scorer kompatibel ist.

Xndarray oder DataFrame, Form (n_samples, n_features)

Daten, für die die Permutations-Wichtigkeit berechnet wird.

yarray-like oder None, Form (n_samples, ) oder (n_samples, n_classes)

Ziele für überwachte oder None für unüberwachte Szenarien.

scoringstr, callable, list, tuple oder dict, Standard=None

Zu verwendender Scorer. Wenn scoring eine einzelne Punktzahl darstellt, kann man eine

Wenn scoring mehrere Scores darstellt, kann man

  • eine Liste oder ein Tupel eindeutiger Strings;

  • ein callable, der ein Dictionary zurückgibt, wobei die Schlüssel die Namen der Metriken und die Werte die Score-Werte der Metriken sind;

  • ein Dictionary mit Metriknamen als Schlüssel und Callables als Werte verwenden.

Das Übergeben mehrerer Punktzahlen an scoring ist effizienter als das Aufrufen von permutation_importance für jede der Punktzahlen, da Vorhersagen wiederverwendet werden, um redundante Berechnungen zu vermeiden.

n_repeatsint, Standard=5

Anzahl der Permutationen für ein Merkmal.

n_jobsint oder None, default=None

Anzahl der parallel auszuführenden Jobs. Die Berechnung erfolgt durch die Berechnung des Permutations-Scores für jede Spalte und die Parallelisierung über die Spalten. None bedeutet 1, es sei denn, es befindet sich in einem joblib.parallel_backend Kontext. -1 bedeutet die Verwendung aller Prozessoren. Weitere Details finden Sie im Glossar.

random_stateint, RandomState instance, default=None

Pseudo-Zufallszahlengenerator zur Steuerung der Permutationen jedes Merkmals. Übergeben Sie eine Ganzzahl, um reproduzierbare Ergebnisse über Funktionsaufrufe hinweg zu erhalten. Siehe Glossar.

sample_weightarray-like der Form (n_samples,), Standardwert=None

Stichprobengewichte, die beim Scoring verwendet werden.

Hinzugefügt in Version 0.24.

max_samplesint oder float, Standard=1.0

Die Anzahl der Stichproben, die aus X gezogen werden sollen, um die Merkmalswichtigkeit bei jeder Wiederholung zu berechnen (ohne Zurücklegen).

  • Wenn int, dann werden max_samples Samples gezogen.

  • Wenn float, dann werden max_samples * X.shape[0] Stichproben gezogen.

  • Wenn max_samples gleich 1.0 oder X.shape[0] ist, werden alle Stichproben verwendet.

Obwohl die Verwendung dieser Option zu weniger genauen Wichtigkeitsabschätzungen führen kann, bleibt die Methode handhabbar, wenn die Merkmalswichtigkeit für große Datensätze bewertet wird. In Kombination mit n_repeats ermöglicht dies die Steuerung des Kompromisses zwischen Rechengeschwindigkeit und statistischer Genauigkeit dieser Methode.

Hinzugefügt in Version 1.0.

Gibt zurück:
resultBunch oder dict von solchen Instanzen

Dictionary-ähnliches Objekt mit den folgenden Attributen.

importances_meanndarray der Form (n_features, )

Mittelwert der Merkmalswichtigkeit über n_repeats.

importances_stdndarray der Form (n_features, )

Standardabweichung über n_repeats.

importancesndarray der Form (n_features, n_repeats)

Rohe Permutations-Wichtigkeits-Scores.

Wenn es mehrere Scoring-Metriken im Scoring-Parameter gibt, ist result ein Dictionary mit Scorer-Namen als Schlüssel (z.B. ‚roc_auc‘) und Bunch-Objekten wie oben als Werte.

Referenzen

Beispiele

>>> from sklearn.linear_model import LogisticRegression
>>> from sklearn.inspection import permutation_importance
>>> X = [[1, 9, 9],[1, 9, 9],[1, 9, 9],
...      [0, 9, 9],[0, 9, 9],[0, 9, 9]]
>>> y = [1, 1, 1, 0, 0, 0]
>>> clf = LogisticRegression().fit(X, y)
>>> result = permutation_importance(clf, X, y, n_repeats=10,
...                                 random_state=0)
>>> result.importances_mean
array([0.4666, 0.       , 0.       ])
>>> result.importances_std
array([0.2211, 0.       , 0.       ])