Explication des classifieurs d'analyse discriminante

Intermediate

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

Introduction

L'Analyse Discriminante Linéaire et Quadratique (Linear and Quadratic Discriminant Analysis, LDA et QDA) sont deux classifieurs classiques utilisés en apprentissage automatique. LDA utilise une surface de décision linéaire, tandis que QDA utilise une surface de décision quadratique. Ces classifieurs sont populaires car ils ont des solutions en forme fermée, fonctionnent bien en pratique et n'ont pas d'hyperparamètres à ajuster.

Dans ce laboratoire (lab), nous explorerons comment effectuer LDA et QDA à l'aide de scikit-learn, une bibliothèque d'apprentissage automatique populaire en Python.

Conseils pour la Machine Virtuelle (VM)

Une fois le démarrage de la machine virtuelle terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Notebook afin d'accéder à Jupyter Notebook pour pratiquer.

Parfois, vous devrez peut-être attendre quelques secondes que Jupyter Notebook ait terminé de charger. La validation des opérations ne peut pas être automatisée en raison des limitations de Jupyter Notebook.

Si vous rencontrez des problèmes lors de votre apprentissage, n'hésitez pas à poser vos questions à Labby. Fournissez des commentaires après la session, et nous résoudrons rapidement le problème pour vous.

Ceci est un Guided Lab, qui fournit des instructions étape par étape pour vous aider à apprendre et à pratiquer. Suivez attentivement les instructions pour compléter chaque étape et acquérir une expérience pratique. Les données historiques montrent que c'est un laboratoire de niveau débutant avec un taux de réussite de 81%. Il a reçu un taux d'avis positifs de 95% de la part des apprenants.

Importation des bibliothèques nécessaires

Tout d'abord, nous devons importer les bibliothèques nécessaires, y compris scikit-learn (sklearn) et matplotlib, qui seront utilisées pour la visualisation des données.

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

Génération de données synthétiques

Ensuite, nous allons générer des données synthétiques pour démontrer la différence entre LDA et QDA. Nous utiliserons la fonction make_classification de scikit-learn pour créer deux classes avec des modèles distincts.

from sklearn.datasets import make_classification

## Génération de données synthétiques
X, y = make_classification(n_samples=100, n_features=2, n_informative=2, n_redundant=0, n_classes=2, random_state=1)

Entraînement et visualisation des classifieurs

Maintenant, nous allons entraîner les classifieurs LDA et QDA sur les données synthétiques et visualiser les frontières de décision.

## Entraînement du classifieur LDA
lda = LinearDiscriminantAnalysis()
lda.fit(X, y)

## Entraînement du classifieur QDA
qda = QuadraticDiscriminantAnalysis()
qda.fit(X, y)

## Traçage des frontières de décision
def plot_decision_boundary(classifier, title):
    h = 0.02  ## Pas dans le maillage
    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('Caractéristique 1')
    plt.ylabel('Caractéristique 2')
    plt.title(title)

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

plt.subplot(1, 2, 1)
plot_decision_boundary(lda, 'Analyse Discriminante Linéaire')

plt.subplot(1, 2, 2)
plot_decision_boundary(qda, 'Analyse Discriminante Quadratique')

plt.tight_layout()
plt.show()

Réduction de dimension à l'aide de l'Analyse Discriminante Linéaire (LDA)

LDA peut également être utilisé pour la réduction de dimension supervisée. Nous allons démontrer cela en réduisant la dimension de l'ensemble de données Iris.

from sklearn.datasets import load_iris

## Chargement de l'ensemble de données Iris
iris = load_iris()
X, y = iris.data, iris.target

## Réduction de dimension à l'aide de LDA
lda = LinearDiscriminantAnalysis(n_components=2)
X_lda = lda.fit_transform(X, y)

Résumé

L'Analyse Discriminante Linéaire et Quadratique (LDA et QDA) sont deux classifieurs classiques utilisés en apprentissage automatique. LDA utilise une surface de décision linéaire, tandis que QDA utilise une surface de décision quadratique. Ces classifieurs ont des solutions analytiques et donnent de bons résultats en pratique. LDA peut également être utilisé pour la réduction de dimension supervisée.