Classificação de Processo Gaussiano no Conjunto de Dados Iris

Beginner

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

Introdução

Neste laboratório, exploraremos como utilizar a Classificação por Processo Gaussiano (GPC) no conjunto de dados Iris. O conjunto de dados Iris é um conjunto de dados famoso que contém informações sobre o comprimento e a largura da sépala e pétala de três espécies diferentes de flores Iris. Usaremos o scikit-learn para implementar a GPC, que é uma abordagem probabilística para tarefas de classificação.

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 prontamente o problema para si.

Importando bibliotecas e conjunto de dados necessários

Primeiro, importamos as bibliotecas necessárias e carregamos o conjunto de dados Iris do scikit-learn.

import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.gaussian_process import GaussianProcessClassifier
from sklearn.gaussian_process.kernels import RBF

iris = datasets.load_iris()
X = iris.data[:, :2]  ## apenas as duas primeiras características são utilizadas.
y = np.array(iris.target, dtype=int)

Definindo a função kernel

Em seguida, definiremos a função kernel. Neste exemplo, usaremos o kernel Função de Base Radial (RBF). Definiremos duas versões do kernel RBF: uma versão isotrópica e uma versão anisotrópica.

kernel = 1.0 * RBF([1.0])
gpc_rbf_isotropic = GaussianProcessClassifier(kernel=kernel).fit(X, y)

kernel = 1.0 * RBF([1.0, 1.0])
gpc_rbf_anisotropic = GaussianProcessClassifier(kernel=kernel).fit(X, y)

Criando uma malha para plotagem

Agora, criaremos uma malha para plotagem. A malha será usada para plotar as probabilidades previstas para cada ponto na malha. Também definiremos o tamanho do passo para a malha.

h = 0.02  ## tamanho do passo na malha

x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))

Plotando as probabilidades previstas

Agora, plotaremos as probabilidades previstas para cada ponto na malha. Criaremos dois subplots: um para o kernel RBF isotrópico e outro para o kernel RBF anisotrópico. Usaremos o método predict_proba para obter as probabilidades previstas para cada ponto na malha. Em seguida, plotaremos as probabilidades previstas como um gráfico de cores na malha. Também plotaremos os pontos de treinamento para cada espécie de flor Iris.

titles = ["RBF Isotrópico", "RBF Anisotrópico"]
plt.figure(figsize=(10, 5))
for i, clf in enumerate((gpc_rbf_isotropic, gpc_rbf_anisotropic)):
    ## Plota as probabilidades previstas. Para isso, atribuiremos uma cor a
    ## cada ponto na malha [x_min, m_max]x[y_min, y_max].
    plt.subplot(1, 2, i + 1)

    Z = clf.predict_proba(np.c_[xx.ravel(), yy.ravel()])

    ## Coloca o resultado em um gráfico de cores
    Z = Z.reshape((xx.shape[0], xx.shape[1], 3))
    plt.imshow(Z, extent=(x_min, x_max, y_min, y_max), origin="lower")

    ## Plota também os pontos de treinamento
    plt.scatter(X[:, 0], X[:, 1], c=np.array(["r", "g", "b"])[y], edgecolors=(0, 0, 0))
    plt.xlabel("Comprimento da sépala")
    plt.ylabel("Largura da sépala")
    plt.xlim(xx.min(), xx.max())
    plt.ylim(yy.min(), yy.max())
    plt.xticks(())
    plt.yticks(())
    plt.title(
        "%s, LML: %.3f" % (titles[i], clf.log_marginal_likelihood(clf.kernel_.theta))
    )

plt.tight_layout()
plt.show()

Resumo

Neste laboratório, exploramos como usar a Classificação de Processo Gaussiano (GPC) no conjunto de dados Iris usando a biblioteca scikit-learn. Definimos duas versões do kernel Função de Base Radial (RBF): uma versão isotrópica e uma versão anisotrópica. Em seguida, criamos uma malha para plotar as probabilidades previstas para cada ponto na malha e plotamos as probabilidades previstas como um gráfico de cores na malha. Finalmente, plotamos os pontos de treinamento para cada espécie de flor Iris.