Explicación de los clasificadores de Análisis Discriminante

Machine LearningMachine LearningBeginner
Practicar Ahora

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

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

El Análisis Discriminante Lineal y Cuadrático (Linear and Quadratic Discriminant Analysis, LDA y QDA) son dos clasificadores clásicos utilizados en el aprendizaje automático. El LDA utiliza una superficie de decisión lineal, mientras que el QDA utiliza una superficie de decisión cuadrática. Estos clasificadores son populares porque tienen soluciones en forma cerrada, funcionan bien en la práctica y no tienen hiperparámetros que ajustar.

En este laboratorio, exploraremos cómo realizar LDA y QDA utilizando scikit-learn, una popular biblioteca de aprendizaje automático en Python.

Consejos para la MV

Después de que la máquina virtual (VM) haya terminado de iniciar, haz clic en la esquina superior izquierda para cambiar a la pestaña Notebook y acceder a Jupyter Notebook para practicar.

A veces, es posible que debas esperar unos segundos para que Jupyter Notebook termine de cargar. La validación de las operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.

Si encuentras problemas durante el aprendizaje, no dudes en preguntar a Labby. Proporciona comentarios después de la sesión y resolveremos rápidamente el problema para ti.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/CoreModelsandAlgorithmsGroup(["Core Models and Algorithms"]) sklearn(("Sklearn")) -.-> sklearn/UtilitiesandDatasetsGroup(["Utilities and Datasets"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/discriminant_analysis("Discriminant Analysis") sklearn/UtilitiesandDatasetsGroup -.-> sklearn/datasets("Datasets") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/discriminant_analysis -.-> lab-71094{{"Explicación de los clasificadores de Análisis Discriminante"}} sklearn/datasets -.-> lab-71094{{"Explicación de los clasificadores de Análisis Discriminante"}} ml/sklearn -.-> lab-71094{{"Explicación de los clasificadores de Análisis Discriminante"}} end

Importar las bibliotecas necesarias

Primero, necesitamos importar las bibliotecas necesarias, incluyendo scikit-learn (sklearn) y matplotlib, que se utilizarán para la visualización de datos.

import numpy as np
import matplotlib.pyplot as plt
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis, QuadraticDiscriminantAnalysis

Generar datos sintéticos

A continuación, generaremos datos sintéticos para demostrar la diferencia entre LDA y QDA. Utilizaremos la función make_classification de scikit-learn para crear dos clases con patrones distintos.

from sklearn.datasets import make_classification

## Generate synthetic data
X, y = make_classification(n_samples=100, n_features=2, n_informative=2, n_redundant=0, n_classes=2, random_state=1)

Entrenar y visualizar los clasificadores

Ahora, entrenaremos los clasificadores LDA y QDA con los datos sintéticos y visualizaremos los límites de decisión.

## Train the LDA classifier
lda = LinearDiscriminantAnalysis()
lda.fit(X, y)

## Train the QDA classifier
qda = QuadraticDiscriminantAnalysis()
qda.fit(X, y)

## Plot the decision boundaries
def plot_decision_boundary(classifier, title):
    h = 0.02  ## step size in the mesh
    x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
    y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
    xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))
    Z = classifier.predict(np.c_[xx.ravel(), yy.ravel()])
    Z = Z.reshape(xx.shape)
    plt.contourf(xx, yy, Z, alpha=0.8)
    plt.scatter(X[:, 0], X[:, 1], c=y, edgecolors='k', cmap=plt.cm.Paired)
    plt.xlabel('Feature 1')
    plt.ylabel('Feature 2')
    plt.title(title)

plt.figure(figsize=(10, 4))

plt.subplot(1, 2, 1)
plot_decision_boundary(lda, 'Linear Discriminant Analysis')

plt.subplot(1, 2, 2)
plot_decision_boundary(qda, 'Quadratic Discriminant Analysis')

plt.tight_layout()
plt.show()

Realizar reducción de dimensionalidad utilizando LDA

El Análisis Discriminante Lineal (LDA) también se puede utilizar para la reducción de dimensionalidad supervisada. Demostraremos esto reduciendo la dimensión del conjunto de datos Iris.

from sklearn.datasets import load_iris

## Load the Iris dataset
iris = load_iris()
X, y = iris.data, iris.target

## Perform dimensionality reduction using LDA
lda = LinearDiscriminantAnalysis(n_components=2)
X_lda = lda.fit_transform(X, y)

Resumen

El Análisis Discriminante Lineal y Cuadrático (LDA y QDA) son dos clasificadores clásicos utilizados en el aprendizaje automático (machine learning). El LDA utiliza una superficie de decisión lineal, mientras que el QDA utiliza una superficie de decisión cuadrática. Estos clasificadores tienen soluciones en forma cerrada y funcionan bien en la práctica. El LDA también se puede utilizar para la reducción de dimensionalidad supervisada.