mutual_info_classif#
- sklearn.feature_selection.mutual_info_classif(X, y, *, discrete_features='auto', n_neighbors=3, copy=True, random_state=None, n_jobs=None)[Quelle]#
Schätzt die gegenseitige Information für eine diskrete Zielvariable.
Die gegenseitige Information (MI) [1] zwischen zwei Zufallsvariablen ist ein nicht-negativer Wert, der die Abhängigkeit zwischen den Variablen misst. Sie ist genau dann gleich Null, wenn zwei Zufallsvariablen unabhängig sind, und höhere Werte bedeuten eine höhere Abhängigkeit.
Die Funktion basiert auf nicht-parametrischen Methoden, die auf der Schätzung der Entropie aus k-nächsten Nachbarschaftsabständen basieren, wie in [2] und [3] beschrieben. Beide Methoden basieren auf der ursprünglich in [4] vorgeschlagenen Idee.
Sie kann für die univariate Merkmalsauswahl verwendet werden. Lesen Sie mehr im Benutzerhandbuch.
- Parameter:
- X{array-like, sparse matrix} der Form (n_samples, n_features)
Merkmalsmatrix.
- yarray-like von Form (n_samples,)
Zielvektor.
- discrete_features„auto“, bool oder array-ähnlich, Standard=„auto“
Wenn bool, wird bestimmt, ob alle Merkmale als diskret oder kontinuierlich betrachtet werden sollen. Wenn Array, sollte es entweder eine boolesche Maske mit der Form (n_features,) oder ein Array mit den Indizes diskreter Merkmale sein. Wenn „auto“, wird es für dichte
Xauf False und für dünneXauf True gesetzt.- n_neighborsint, Standard=3
Anzahl der Nachbarn, die zur MI-Schätzung für kontinuierliche Variablen verwendet werden, siehe [2] und [3]. Höhere Werte reduzieren die Varianz der Schätzung, können aber zu Verzerrungen führen.
- copybool, Standard=True
Ob eine Kopie der gegebenen Daten erstellt werden soll. Wenn auf False gesetzt, werden die ursprünglichen Daten überschrieben.
- random_stateint, RandomState-Instanz oder None, default=None
Bestimmt die Zufallszahlengenerierung zum Hinzufügen von kleinem Rauschen zu kontinuierlichen Variablen, um wiederholte Werte zu entfernen. Übergeben Sie eine Ganzzahl für reproduzierbare Ergebnisse über mehrere Funktionsaufrufe hinweg. Siehe Glossar.
- n_jobsint, default=None
Die Anzahl der Jobs, die zur Berechnung der gegenseitigen Information verwendet werden. Die Parallelisierung erfolgt auf den Spalten von
X.Nonebedeutet 1, es sei denn, Sie befinden sich in einemjoblib.parallel_backend-Kontext.-1bedeutet die Verwendung aller Prozessoren. Siehe Glossar für weitere Details.Hinzugefügt in Version 1.5.
- Gibt zurück:
- mindarray, Form (n_features,)
Geschätzte gegenseitige Information zwischen jedem Merkmal und dem Ziel in nat-Einheiten.
Anmerkungen
Der Begriff „diskrete Merkmale“ wird anstelle der Benennung als „kategorisch“ verwendet, da er die Essenz genauer beschreibt. Zum Beispiel sind Pixelintensitäten eines Bildes diskrete Merkmale (aber kaum kategorisch), und Sie werden bessere Ergebnisse erzielen, wenn Sie sie als solche kennzeichnen. Beachten Sie auch, dass die Behandlung einer kontinuierlichen Variablen als diskret und umgekehrt normalerweise zu falschen Ergebnissen führt, seien Sie also darauf aufmerksam.
Die tatsächliche gegenseitige Information kann nicht negativ sein. Wenn ihre Schätzung negativ ausfällt, wird sie durch Null ersetzt.
Referenzen
[1]Gegenseitige Information auf Wikipedia.
[2] (1,2)A. Kraskov, H. Stogbauer und P. Grassberger, „Estimating mutual information“. Phys. Rev. E 69, 2004.
[3] (1,2)B. C. Ross „Mutual Information between Discrete and Continuous Data Sets“. PLoS ONE 9(2), 2014.
[4]L. F. Kozachenko, N. N. Leonenko, „Sample Estimate of the Entropy of a Random Vector:“, Probl. Peredachi Inf., 23:2 (1987), 9-16
Beispiele
>>> from sklearn.datasets import make_classification >>> from sklearn.feature_selection import mutual_info_classif >>> X, y = make_classification( ... n_samples=100, n_features=10, n_informative=2, n_clusters_per_class=1, ... shuffle=False, random_state=42 ... ) >>> mutual_info_classif(X, y) array([0.589, 0.107, 0.196, 0.0968 , 0., 0. , 0. , 0. , 0. , 0.])
Galeriebeispiele#
Dimensionsreduktion auswählen mit Pipeline und GridSearchCV