Análise de Componentes Principais Incremental no Conjunto de Dados Iris

Beginner

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

Introdução

Este laboratório guiará você por um processo passo a passo de utilização do algoritmo de Análise de Componentes Principais Incremental (IPCA) para realizar redução de dimensionalidade no conjunto de dados Iris. O IPCA é utilizado quando o conjunto de dados é muito grande para caber na memória e requer uma abordagem incremental. Vamos comparar os resultados do IPCA com o algoritmo PCA tradicional.

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

Importar Bibliotecas

Vamos importar as bibliotecas necessárias, incluindo numpy, matplotlib e os módulos PCA e IPCA do scikit-learn.

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.decomposition import PCA, IncrementalPCA

Carregar Dados

Vamos carregar o conjunto de dados Iris do módulo datasets do scikit-learn.

iris = load_iris()
X = iris.data
y = iris.target

Executar IPCA

Vamos executar IPCA ( Incremental Principal Component Analysis) no conjunto de dados Iris, inicializando uma instância da classe IPCA e ajustando-a aos dados.

n_components = 2
ipca = IncrementalPCA(n_components=n_components, batch_size=10)
X_ipca = ipca.fit_transform(X)

Executar PCA

Vamos executar PCA (Análise de Componentes Principais) no conjunto de dados Iris, inicializando uma instância da classe PCA e ajustando-a aos dados.

pca = PCA(n_components=n_components)
X_pca = pca.fit_transform(X)

Visualizar Resultados

Vamos visualizar os resultados de IPCA e PCA, plotando os dados transformados num gráfico de dispersão.

colors = ["navy", "turquoise", "darkorange"]

for X_transformed, title in [(X_ipca, "IPCA Incremental"), (X_pca, "PCA")]:
    plt.figure(figsize=(8, 8))
    for color, i, target_name in zip(colors, [0, 1, 2], iris.target_names):
        plt.scatter(
            X_transformed[y == i, 0],
            X_transformed[y == i, 1],
            color=color,
            lw=2,
            label=target_name,
        )

    if "Incremental" in title:
        err = np.abs(np.abs(X_pca) - np.abs(X_ipca)).mean()
        plt.title(title + " do conjunto de dados iris\nErro médio absoluto não assinado %.6f" % err)
    else:
        plt.title(title + " do conjunto de dados iris")
    plt.legend(loc="best", shadow=False, scatterpoints=1)
    plt.axis([-4, 4, -1.5, 1.5])

plt.show()

Resumo

Neste laboratório, aprendemos a utilizar o algoritmo de Análise de Componentes Principais Incremental (IPCA) para realizar a redução de dimensionalidade no conjunto de dados Iris. Comparámos os resultados do IPCA com o PCA tradicional e visualizamos os dados transformados num gráfico de dispersão. O IPCA é útil quando o conjunto de dados é demasiado grande para caber na memória e requer uma abordagem incremental.