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âmetron_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 entradaX
e aos rótulos de classe correspondentesy
. Os dadosX
devem ser uma matriz onde cada linha representa uma amostra e cada coluna representa uma característica. Os rótulosy
devem ser um vetor de classes. -
transform(X)
: Este método transforma os dados de entradaX
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 dadosX
e aos rótulos de classey
e, em seguida, transforma os dadosX
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 dadosX
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.