Vergleich von F-Test und gegenseitiger Information

Machine LearningMachine LearningBeginner
Jetzt üben

This tutorial is from open-source community. Access the source code

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab werden wir die Unterschiede zwischen den einvarianten F-Test-Statistiken und der gegenseitigen Information lernen. Wir werden die scikit-learn-Bibliothek verwenden, um einen F-Test und eine gegenseitige Informationsregression auf einem Datensatz durchzuführen und die Ergebnisse zu vergleichen.

Tipps für die VM

Nachdem der VM-Start abgeschlossen ist, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu nutzen.

Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund der Einschränkungen in Jupyter Notebook nicht automatisiert werden.

Wenn Sie bei der Lernphase Probleme haben, können Sie Labby gerne fragen. Geben Sie nach der Sitzung Feedback, und wir werden das Problem für Sie prompt beheben.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/DataPreprocessingandFeatureEngineeringGroup(["Data Preprocessing and Feature Engineering"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/DataPreprocessingandFeatureEngineeringGroup -.-> sklearn/feature_selection("Feature Selection") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/feature_selection -.-> lab-49121{{"Vergleich von F-Test und gegenseitiger Information"}} ml/sklearn -.-> lab-49121{{"Vergleich von F-Test und gegenseitiger Information"}} end

Bibliotheken importieren

Wir beginnen, indem wir die erforderlichen Bibliotheken für dieses Lab importieren. Für dieses Lab werden wir numpy, matplotlib und scikit-learn verwenden.

import numpy as np
import matplotlib.pyplot as plt
from sklearn.feature_selection import f_regression, mutual_info_regression

Datensatz erstellen

Wir werden einen Datensatz mit 3 Merkmalen erstellen, wobei das erste Merkmal eine lineare Beziehung zum Ziel hat, das zweite Merkmal eine nicht-lineare Beziehung zum Ziel hat und das dritte Merkmal völlig irrelevant ist. Für diesen Datensatz werden wir 1000 Stichproben erstellen.

np.random.seed(0)
X = np.random.rand(1000, 3)
y = X[:, 0] + np.sin(6 * np.pi * X[:, 1]) + 0.1 * np.random.randn(1000)

F-Test berechnen

Wir werden nun den F-Test-Wert für jedes Merkmal berechnen. Der F-Test erfasst nur die lineare Abhängigkeit zwischen Variablen. Wir werden die F-Test-Werte normalisieren, indem wir sie durch den maximalen F-Test-Wert dividieren.

f_test, _ = f_regression(X, y)
f_test /= np.max(f_test)

Gegenseitige Information berechnen

Wir werden nun den Wert der gegenseitigen Information für jedes Merkmal berechnen. Die gegenseitige Information kann jede Art von Abhängigkeit zwischen Variablen erfassen. Wir werden die Werte der gegenseitigen Information normalisieren, indem wir sie durch den maximalen Wert der gegenseitigen Information dividieren.

mi = mutual_info_regression(X, y)
mi /= np.max(mi)

Die Ergebnisse plotten

Wir werden nun die Abhängigkeit des Ziels von jedem Merkmal sowie die F-Test- und die Werte der gegenseitigen Information für jedes Merkmal plotten.

plt.figure(figsize=(15, 5))
for i in range(3):
    plt.subplot(1, 3, i + 1)
    plt.scatter(X[:, i], y, edgecolor="black", s=20)
    plt.xlabel("$x_{}$".format(i + 1), fontsize=14)
    if i == 0:
        plt.ylabel("$y$", fontsize=14)
    plt.title("F-test={:.2f}, MI={:.2f}".format(f_test[i], mi[i]), fontsize=16)
plt.show()

Zusammenfassung

In diesem Lab haben wir die Unterschiede zwischen der einvarianten F-Test-Statistik und der gegenseitigen Information kennengelernt. Wir haben einen F-Test und eine gegenseitige Informationsregression auf einem Datensatz durchgeführt und die Ergebnisse verglichen. Wir haben festgestellt, dass der F-Test nur die lineare Abhängigkeit zwischen Variablen erfasst, während die gegenseitige Information jede Art von Abhängigkeit zwischen Variablen erfassen kann.