Análise de Componentes Principais

Beginner

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

Introdução

Análise de Componentes Principais (PCA) é uma técnica estatística usada para simplificar dados. É uma técnica de transformação linear que encontra os recursos ou padrões mais importantes nos dados. A PCA é amplamente utilizada na análise de dados e aprendizagem de máquina para redução de dimensionalidade, compressão de dados e extração de recursos. Neste laboratório, usaremos a biblioteca scikit-learn do Python para realizar PCA num conjunto de dados e visualizar os resultados.

Dicas da Máquina Virtual

Após o arranque da máquina virtual, 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.

Importar Bibliotecas

Começamos importando as bibliotecas necessárias para este laboratório. Usaremos o numpy para operações numéricas, o matplotlib para visualização e o scikit-learn para PCA.

import numpy as np
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA

Criar Dados

Vamos gerar um conjunto de dados aleatório para este laboratório. O conjunto de dados terá três variáveis: x, y e z. Definiremos x e y como variáveis aleatórias normalmente distribuídas com média 0 e desvio padrão de 0,5. z também é normalmente distribuída com média 0 e desvio padrão de 0,1.

e = np.exp(1)
np.random.seed(4)

y = np.random.normal(scale=0.5, size=(30000))
x = np.random.normal(scale=0.5, size=(30000))
z = np.random.normal(scale=0.1, size=len(x))

Executar PCA

Em seguida, executaremos PCA em nosso conjunto de dados. Primeiro, concatenamos x, y e z para formar uma matriz 3D Y. Em seguida, criamos uma instância da classe PCA e a ajustamos aos nossos dados. Podemos então acessar os componentes principais usando o atributo components_ do objeto PCA.

Y = np.c_[x, y, z]
pca = PCA(n_components=3)
pca.fit(Y)
components = pca.components_

Visualizar Resultados da PCA

Podemos visualizar os resultados da nossa PCA plotando os componentes principais. Criamos um gráfico de dispersão 3D dos nossos dados e colorimos cada ponto com base na sua densidade. Em seguida, plotamos os dois primeiros componentes principais como um plano. Repetimos este processo para duas vistas diferentes dos dados.

fig = plt.figure(figsize=(10, 5))

## Primeira vista
ax = fig.add_subplot(121, projection="3d", elev=-40, azim=-80)
ax.set_title("Vista 1")

## Plotar os dados
density = np.exp(-(x ** 2 + y ** 2))
ax.scatter(x, y, z, c=density, cmap="plasma", marker="+", alpha=0.4)

## Plotar os componentes principais
v1 = components[:, 0]
v2 = components[:, 1]
x_pca_plane = np.array([v1[0], -v1[0], -v1[0], v1[0]])
y_pca_plane = np.array([v1[1], -v1[1], -v1[1], v1[1]])
z_pca_plane = np.array([v1[2], -v1[2], v1[2], v1[2]])
ax.plot_surface(x_pca_plane, y_pca_plane, z_pca_plane, alpha=0.2)

## Segunda vista
ax = fig.add_subplot(122, projection="3d", elev=30, azim=20)
ax.set_title("Vista 2")

## Plotar os dados
density = np.exp(-(x ** 2 + y ** 2))
ax.scatter(x, y, z, c=density, cmap="plasma", marker="+", alpha=0.4)

## Plotar os componentes principais
v1 = components[:, 0]
v2 = components[:, 1]
x_pca_plane = np.array([v1[0], -v1[0], -v1[0], v1[0]])
y_pca_plane = np.array([v1[1], -v1[1], -v1[1], v1[1]])
z_pca_plane = np.array([v1[2], -v1[2], v1[2], v1[2]])
ax.plot_surface(x_pca_plane, y_pca_plane, z_pca_plane, alpha=0.2)

plt.show()

Resumo

Neste laboratório, aprendemos como executar PCA (Análise de Componentes Principais) em um conjunto de dados usando a biblioteca scikit-learn do Python. Geramos um conjunto de dados aleatório com três variáveis, executamos a PCA e visualizamos os resultados. Plotamos os dados em um gráfico de dispersão 3D e adicionamos um plano para os dois primeiros componentes principais. A PCA é uma técnica poderosa para reduzir a dimensionalidade dos dados e encontrar os padrões ou características mais importantes.