A classe LinearDiscriminantAnalysis no módulo sklearn.discriminant_analysis implementa o algoritmo de Linear Discriminant Analysis (LDA). O LDA é uma técnica de redução de dimensionalidade supervisionada que é frequentemente usada para a classificação e a separação de classes em problemas de aprendizado de máquina.

Sintaxe

from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
 
lda = LinearDiscriminantAnalysis(n_components=1)

Principais Parâmetros

  • n_components: Especifica o número de componentes principais (ou discriminantes lineares) a serem mantidos após a redução de dimensionalidade. É semelhante ao parâmetro n_components em PCA. Se não for especificado, o LDA manterá o número mínimo entre o número de classes menos um e o número de recursos.

  • solver: Define o algoritmo a ser usado para calcular os discriminantes lineares. Pode ser “svd” (Decomposição de Valores Singulares), “lsqr” (Mínimos Quadrados), ou “eigen” (Decomposição Espectral). A escolha depende do tamanho do conjunto de dados e da estrutura dos dados.

  • shrinkage: Controla a intensidade da regularização aplicada à matriz de covariância. Pode ser um valor entre 0 e 1, onde 0 significa nenhuma regularização e 1 significa máxima regularização.

Principais métodos

  • fit(X, y): Este método é usado para ajustar o modelo LDA aos dados de entrada X e aos rótulos de classe correspondentes y. Os dados X devem ser uma matriz onde cada linha representa uma amostra e cada coluna representa uma característica. Os rótulos y devem ser um vetor de classes.

  • transform(X): Este método transforma os dados de entrada X no espaço de características de menor dimensão determinado pelo LDA. Retorna os dados projetados no novo espaço.

  • fit_transform(X, y): Este método combina as etapas de ajuste e transformação. Ajusta o modelo LDA aos dados X e aos rótulos de classe y e, em seguida, transforma os dados X no espaço de características de menor dimensão. Retorna os dados projetados no novo espaço.

  • predict(X): Este método é usado para prever as classes de novos dados X com base no modelo LDA treinado. Retorna as classes previstas.

Exemplo

from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
import numpy as np
 
# Criar uma matriz de dados de exemplo (m amostras, n características)
X = np.array([[1, 2], [2, 3], [3, 4], [4, 5]])
# Criar um vetor de rótulos de classe correspondentes (m amostras)
y = np.array([0, 0, 1, 1])
 
# Criar um objeto LinearDiscriminantAnalysis
lda = LinearDiscriminantAnalysis(n_components=1)
 
# Ajustar o modelo LDA aos dados e rótulos
lda.fit(X, y)
 
# Transformar os dados originais no novo espaço de características
X_transformed = lda.transform(X)
 
# Prever as classes de novos dados
new_data = np.array([[1.5, 2.5]])
predicted_class = lda.predict(new_data)
 
print(X_transformed)
print(predicted_class)

Saída:

[[-2.12132034]
 [-0.70710678]
 [ 0.70710678]
 [ 2.12132034]]
 
[0]

Neste exemplo, criamos um objeto LinearDiscriminantAnalysis com um único componente principal (LDA) e ajustamos o modelo aos dados de entrada X e aos rótulos de classe correspondentes y. Em seguida, usamos o método transform para projetar os dados originais no novo espaço de características determinado pelo LDA. Também usamos o método predict para prever a classe de novos dados.