Comparaison du test F et de l'information mutuelle

Machine LearningMachine LearningBeginner
Pratiquer maintenant

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

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, nous allons apprendre les différences entre les statistiques de test F univarié et l'information mutuelle. Nous utiliserons la bibliothèque scikit-learn pour effectuer un test F et une régression d'information mutuelle sur un ensemble de données et comparer les résultats.

Conseils sur la machine virtuelle

Une fois le démarrage de la machine virtuelle terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Notebook pour accéder à Jupyter Notebook pour pratiquer.

Parfois, vous devrez peut-être attendre quelques secondes pour que Jupyter Notebook ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations de Jupyter Notebook.

Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez des commentaires après la session, et nous réglerons rapidement le problème pour vous.


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{{"Comparaison du test F et de l'information mutuelle"}} ml/sklearn -.-> lab-49121{{"Comparaison du test F et de l'information mutuelle"}} end

Importation des bibliothèques

Nous allons commencer par importer les bibliothèques nécessaires pour ce laboratoire. Nous utiliserons numpy, matplotlib et scikit-learn pour ce laboratoire.

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

Création d'un ensemble de données

Nous allons créer un ensemble de données avec 3 caractéristiques, où la première caractéristique a une relation linéaire avec la cible, la deuxième caractéristique a une relation non linéaire avec la cible et la troisième caractéristique est complètement inutile. Nous allons créer 1000 échantillons pour cet ensemble de données.

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)

Calcul du test F

Nous allons maintenant calculer le score du test F pour chaque caractéristique. Le test F ne capture que la dépendance linéaire entre les variables. Nous allons normaliser les scores du test F en les divisant par le score maximal du test F.

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

Calcul de l'information mutuelle

Nous allons maintenant calculer le score d'information mutuelle pour chaque caractéristique. L'information mutuelle peut capturer n'importe quel type de dépendance entre les variables. Nous allons normaliser les scores d'information mutuelle en les divisant par le score maximal d'information mutuelle.

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

Tracer les résultats

Nous allons maintenant tracer la dépendance de la cible par rapport à chaque caractéristique ainsi que les scores du test F et de l'information mutuelle pour chaque caractéristique.

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()

Sommaire

Dans ce laboratoire, nous avons appris les différences entre les statistiques du test F univarié et l'information mutuelle. Nous avons effectué un test F et une régression d'information mutuelle sur un ensemble de données et comparé les résultats. Nous avons constaté que le test F ne capture que la dépendance linéaire entre les variables tandis que l'information mutuelle peut capturer n'importe quel type de dépendance entre les variables.