Gráfico PCA vs LDA

Beginner

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

Introdução

Neste laboratório, compararemos o desempenho de dois algoritmos populares de redução de dimensionalidade, Análise de Componentes Principais (PCA) e Análise Discriminante Linear (LDA), no conjunto de dados Iris. O conjunto de dados Iris contém 3 tipos de flores Iris com 4 atributos: comprimento da sépala, largura da sépala, comprimento da pétala e largura da pétala.

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

Carregar o Conjunto de Dados

Primeiro, precisamos carregar o conjunto de dados Iris usando a função load_iris() integrada do scikit-learn.

import matplotlib.pyplot as plt
from sklearn import datasets

iris = datasets.load_iris()

X = iris.data
y = iris.target
target_names = iris.target_names

Executar PCA

Em seguida, executaremos a Análise de Componentes Principais (PCA) no conjunto de dados para identificar a combinação de atributos que explicam a maior variação nos dados. Vamos representar graficamente as diferentes amostras nos dois primeiros componentes principais.

from sklearn.decomposition import PCA

pca = PCA(n_components=2)
X_r = pca.fit(X).transform(X)

## Percentagem de variância explicada para cada componente
print("Proporção da variância explicada (primeiros dois componentes): %s" % str(pca.explained_variance_ratio_))

plt.figure()
colors = ["navy", "turquoise", "darkorange"]
lw = 2

for color, i, target_name in zip(colors, [0, 1, 2], target_names):
    plt.scatter(X_r[y == i, 0], X_r[y == i, 1], color=color, alpha=0.8, lw=lw, label=target_name)

plt.legend(loc="best", shadow=False, scatterpoints=1)
plt.title("PCA do Conjunto de Dados Iris")
plt.show()

Executar LDA

Agora, executaremos a Análise Discriminante Linear (LDA) no conjunto de dados para identificar atributos que explicam a maior variação entre as classes. Ao contrário da PCA, o LDA é um método supervisionado que utiliza rótulos de classe conhecidos.

from sklearn.discriminant_analysis import LinearDiscriminantAnalysis

lda = LinearDiscriminantAnalysis(n_components=2)
X_r2 = lda.fit(X, y).transform(X)

plt.figure()
for color, i, target_name in zip(colors, [0, 1, 2], target_names):
    plt.scatter(X_r2[y == i, 0], X_r2[y == i, 1], alpha=0.8, color=color, label=target_name)

plt.legend(loc="best", shadow=False, scatterpoints=1)
plt.title("LDA do Conjunto de Dados Iris")
plt.show()

Comparar Resultados

Finalmente, compararemos os resultados da PCA e da LDA. Podemos observar que a LDA apresenta um desempenho superior à PCA na separação das três classes no conjunto de dados Iris.

Resumo

Neste laboratório, aprendemos a realizar Análise de Componentes Principais (PCA) e Análise Discriminante Linear (LDA) no conjunto de dados Iris utilizando a biblioteca scikit-learn. Também comparamos o desempenho destes dois algoritmos de redução de dimensionalidade e verificamos que a LDA apresenta um desempenho superior à PCA na separação das diferentes classes no conjunto de dados.