Modelo de Mistura Gaussiana

Beginner

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

Introdução

Este laboratório guiará você pela implementação de Modelos de Mistura Gaussiana (GMMs) usando a biblioteca scikit-learn em Python. GMMs são modelos probabilísticos que assumem que os dados são gerados a partir de uma mistura de várias distribuições gaussianas. Eles são amplamente utilizados em diversos campos, como visão computacional, finanças e bioinformática, para tarefas de agrupamento e estimação de densidade.

Dicas da Máquina Virtual

Após o término da inicialização da máquina virtual, clique no canto superior esquerdo para mudar para a aba Notebook para acessar o Jupyter Notebook para praticar.

Às vezes, pode ser necessário aguardar alguns segundos para que o Jupyter Notebook termine de carregar. A validação das operações não pode ser automatizada devido a limitações no Jupyter Notebook.

Se você enfrentar problemas durante o aprendizado, sinta-se à vontade para perguntar ao Labby. Forneça feedback após a sessão e resolveremos o problema para você prontamente.

Importar Bibliotecas

Neste passo, iremos importar as bibliotecas necessárias para este laboratório. Usaremos o NumPy para cálculos numéricos, o Matplotlib para visualização de dados e o scikit-learn para a implementação de GMMs.

import numpy as np
import matplotlib.pyplot as plt
from sklearn import mixture

Gerar Dados

Neste passo, geraremos um conjunto de dados de amostra que consiste em duas distribuições gaussianas com médias e covariâncias diferentes.

n_samples = 500

np.random.seed(0)
C = np.array([[0.0, -0.1], [1.7, 0.4]])
X = np.r_[
    np.dot(np.random.randn(n_samples, 2), C),
    0.7 * np.random.randn(n_samples, 2) + np.array([-6, 3]),
]

Implementar o Modelo de Mistura Gaussiana

Neste passo, iremos implementar o Modelo de Mistura Gaussiana utilizando a classe GaussianMixture do scikit-learn. Iremos ajustar o modelo aos nossos dados e prever as etiquetas de cluster para cada ponto de dados. Finalmente, iremos plotar os resultados.

## Criar um objeto GMM com 5 componentes
gmm = mixture.GaussianMixture(n_components=5, covariance_type="full")

## Ajustar o GMM aos dados
gmm.fit(X)

## Prever as etiquetas de cluster
Y_ = gmm.predict(X)

## Plotar os resultados
color_iter = ["navy", "c", "cornflowerblue", "gold", "darkorange"]

for i, color in enumerate(color_iter):
    plt.scatter(
        X[Y_ == i, 0], X[Y_ == i, 1], 0.8, color=color, label="Cluster {}".format(i)
    )

plt.legend(loc="best")
plt.title("Modelo de Mistura Gaussiana")
plt.show()

Implementar o Modelo de Mistura Gaussiana Bayesiano

Neste passo, iremos implementar o Modelo de Mistura Gaussiana Bayesiano utilizando a classe BayesianGaussianMixture do scikit-learn. Este modelo possui uma priori de processo de Dirichlet que adapta automaticamente o número de clusters com base nos dados. Iremos ajustar o modelo aos nossos dados e prever as etiquetas de cluster para cada ponto de dados. Finalmente, iremos plotar os resultados.

## Criar um objeto GMM Bayesiano com 5 componentes
dpgmm = mixture.BayesianGaussianMixture(n_components=5, covariance_type="full")

## Ajustar o GMM Bayesiano aos dados
dpgmm.fit(X)

## Prever as etiquetas de cluster
Y_ = dpgmm.predict(X)

## Plotar os resultados
color_iter = ["navy", "c", "cornflowerblue", "gold", "darkorange"]

for i, color in enumerate(color_iter):
    plt.scatter(
        X[Y_ == i, 0], X[Y_ == i, 1], 0.8, color=color, label="Cluster {}".format(i)
    )

plt.legend(loc="best")
plt.title("Modelo de Mistura Gaussiana Bayesiano com uma priori de processo de Dirichlet")
plt.show()

Resumo

Neste laboratório, aprendemos como implementar Modelos de Mistura Gaussiana utilizando a biblioteca scikit-learn em Python. Também aprendemos como gerar um conjunto de dados, ajustar os modelos aos dados e plotar os resultados. Os Modelos de Mistura Gaussiana são ferramentas poderosas para tarefas de agrupamento e estimação de densidade, sendo amplamente utilizados em diversos campos.