Comparación de la Prueba F y la Información Mutua

Beginner

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

Introducción

En este laboratorio, aprenderemos sobre las diferencias entre las estadísticas de prueba F univariada y la información mutua. Utilizaremos la biblioteca scikit-learn para realizar una prueba F y una regresión de información mutua en un conjunto de datos y comparar los resultados.

Consejos sobre la VM

Una vez que se haya iniciado la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.

A veces, es posible que tenga que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de las operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.

Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje sus comentarios después de la sesión y lo resolveremos rápidamente para usted.

Importar bibliotecas

Comenzaremos importando las bibliotecas necesarias para este laboratorio. Utilizaremos numpy, matplotlib y scikit-learn para este laboratorio.

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

Crear conjunto de datos

Crearemos un conjunto de datos con 3 características, donde la primera característica tiene una relación lineal con la variable objetivo, la segunda característica tiene una relación no lineal con la variable objetivo y la tercera característica es completamente irrelevante. Crearemos 1000 muestras para este conjunto de datos.

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)

Calcular la prueba F

Ahora calcularemos la puntuación de la prueba F para cada característica. La prueba F solo captura la dependencia lineal entre variables. Normalizaremos las puntuaciones de la prueba F dividiéndolas por la puntuación máxima de la prueba F.

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

Calcular la información mutua

Ahora calcularemos la puntuación de la información mutua para cada característica. La información mutua puede capturar cualquier tipo de dependencia entre variables. Normalizaremos las puntuaciones de la información mutua dividiéndolas por la puntuación máxima de la información mutua.

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

Graficar los resultados

Ahora graficaremos la dependencia de la variable objetivo en contra de cada característica y las puntuaciones de la prueba F y la información mutua para cada característica.

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

Resumen

En este laboratorio, aprendimos sobre las diferencias entre las estadísticas de la prueba F univariada y la información mutua. Realizamos la prueba F y la regresión de información mutua en un conjunto de datos y comparamos los resultados. Encontramos que la prueba F solo captura la dependencia lineal entre variables mientras que la información mutua puede capturar cualquier tipo de dependencia entre variables.