Estimação de Densidade Usando Densidade Kernel

Beginner

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

Introdução

Neste laboratório, exploraremos a estimação de densidade, uma técnica utilizada para estimar a função de densidade de probabilidade de uma variável aleatória. Especificamente, focaremos na estimação de densidade por núcleos, um método não paramétrico para estimar a densidade.

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 o carregamento. 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 as bibliotecas necessárias

Primeiro, precisamos importar as bibliotecas que usaremos para a estimação de densidade. Usaremos o estimador KernelDensity do módulo sklearn.neighbors e a biblioteca numpy para manipulação de dados.

from sklearn.neighbors import KernelDensity
import numpy as np

Gerar alguns dados de amostra

Em seguida, geraremos alguns dados de amostra para realizar a estimação de densidade. Para os propósitos deste laboratório, vamos gerar um conjunto de dados unidimensional com 100 pontos. Usaremos uma distribuição normal para gerar os dados.

np.random.seed(0)
X = np.random.normal(0, 1, 100).reshape(-1, 1)

Ajustar um estimador de densidade kernel

Agora, criaremos uma instância do estimador KernelDensity e o ajustaremos aos nossos dados. Podemos escolher o tipo de kernel e a largura de banda para o estimador. Por exemplo, podemos usar um kernel gaussiano e definir a largura de banda para 0,2.

kde = KernelDensity(kernel='gaussian', bandwidth=0.2).fit(X)

Avaliar as amostras

Após ajustar o estimador, podemos usar o método score_samples para calcular a probabilidade logarítmica das amostras sob a função de densidade estimada. Isso nos fornecerá uma medida de quão provável cada amostra é de acordo com a estimativa de densidade.

scores = kde.score_samples(X)

Visualizar a estimativa de densidade

Finalmente, podemos visualizar a estimativa de densidade usando um histograma e a função de densidade estimada. Podemos plotar o histograma dos dados originais, bem como a função de densidade estimada.

import matplotlib.pyplot as plt

bins = np.linspace(-5, 5, 50)
plt.hist(X, bins=bins, density=True, alpha=0.5, label='Histograma')
plt.plot(X, np.exp(scores), color='red', label='Estimativa de Densidade Kernel')
plt.legend()
plt.show()

Resumo

Neste laboratório, aprendemos como realizar a estimativa de densidade kernel utilizando o estimador KernelDensity do scikit-learn. A estimativa de densidade kernel é uma técnica poderosa para estimar a função de densidade de probabilidade de uma variável aleatória. Ao ajustar um estimador de densidade kernel a um conjunto de dados, podemos estimar a densidade subjacente e visualizá-la usando um histograma e a função de densidade estimada. Isso nos permite obter insights sobre a distribuição dos dados e fazer previsões probabilísticas.