Comparação de Teste F e Informação Mútua

Beginner

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

Introdução

Neste laboratório, aprenderemos sobre as diferenças entre estatísticas de teste F univariadas e informação mútua. Usaremos a biblioteca scikit-learn para realizar testes F e regressão de informação mútua em um conjunto de dados e comparar os resultados.

Dicas da Máquina Virtual

Após o arranque da VM, clique no canto superior esquerdo para mudar para a aba Notebook para aceder ao Jupyter Notebook para a prática.

Por vezes, pode ser necessário esperar alguns segundos para o Jupyter Notebook terminar de carregar. A validação das operações não pode ser automatizada devido a limitações no Jupyter Notebook.

Se tiver problemas durante o aprendizado, não hesite em contactar o Labby. Forneça feedback após a sessão e resolveremos o problema rapidamente para si.

Importar bibliotecas

Começaremos importando as bibliotecas necessárias para este laboratório. Usaremos numpy, matplotlib e scikit-learn neste laboratório.

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

Criar conjunto de dados

Criaremos um conjunto de dados com 3 características, onde a primeira característica tem uma relação linear com a variável alvo, a segunda característica tem uma relação não linear com a variável alvo e a terceira característica é completamente irrelevante. Criaremos 1000 amostras para este conjunto de dados.

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 o teste F

Agora, calcularemos a pontuação do teste F para cada característica. O teste F captura apenas a dependência linear entre as variáveis. Normalizaremos as pontuações do teste F dividindo-as pela pontuação máxima do teste F.

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

Calcular a informação mútua

Agora, calcularemos a pontuação da informação mútua para cada característica. A informação mútua pode capturar qualquer tipo de dependência entre as variáveis. Normalizaremos as pontuações da informação mútua dividindo-as pela pontuação máxima da informação mútua.

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

Plotar os resultados

Agora, plotaremos a dependência do alvo em relação a cada característica e as pontuações do teste F e da informação mútua 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("Teste F={:.2f}, MI={:.2f}".format(f_test[i], mi[i]), fontsize=16)
plt.show()

Resumo

Neste laboratório, aprendemos sobre as diferenças entre estatísticas de teste F univariadas e informação mútua. Realizamos testes F e regressão de informação mútua em um conjunto de dados e comparamos os resultados. Descobrimos que o teste F captura apenas dependência linear entre variáveis, enquanto a informação mútua pode capturar qualquer tipo de dependência entre variáveis.