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.