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.