SVM : Hyperplan séparateur à marge maximale

Machine LearningMachine LearningBeginner
Pratiquer maintenant

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

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, nous utiliserons scikit-learn pour créer un ensemble de données séparable en deux classes et tracer l'hyperplan séparateur à marge maximale à l'aide d'un classifieur Machine à Vecteurs de Support (SVM) avec un noyau linéaire. L'SVM est un algorithme de classification puissant qui trouve la meilleure frontière ou hyperplan qui sépare les données en différentes classes tout en maximisant la marge entre les classes.

Conseils sur la machine virtuelle

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

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

Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez votre feedback après la session, et nous résoudrons rapidement le problème pour vous.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/ModelSelectionandEvaluationGroup(["Model Selection and Evaluation"]) sklearn(("Sklearn")) -.-> sklearn/UtilitiesandDatasetsGroup(["Utilities and Datasets"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/ModelSelectionandEvaluationGroup -.-> sklearn/inspection("Inspection") sklearn/UtilitiesandDatasetsGroup -.-> sklearn/datasets("Datasets") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/inspection -.-> lab-49284{{"SVM : Hyperplan séparateur à marge maximale"}} sklearn/datasets -.-> lab-49284{{"SVM : Hyperplan séparateur à marge maximale"}} ml/sklearn -.-> lab-49284{{"SVM : Hyperplan séparateur à marge maximale"}} end

Créer un ensemble de données séparable en deux classes

Pour créer un ensemble de données séparable en deux classes, nous utiliserons la fonction make_blobs() de scikit-learn. Cette fonction génère des grappes gaussiennes isotrope pour le clustering et la classification. Nous allons créer 40 échantillons avec deux centres et une graine aléatoire de 6. Nous allons également tracer les points de données à l'aide de matplotlib.

import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs

## créer un ensemble de données séparable en deux classes
X, y = make_blobs(n_samples=40, centers=2, random_state=6)

## tracer les points de données
plt.scatter(X[:, 0], X[:, 1], c=y, s=30, cmap=plt.cm.Paired)
plt.show()

Ajuster le modèle SVM

Ensuite, nous allons ajuster le modèle SVM à notre ensemble de données en utilisant un noyau linéaire et un paramètre de régularisation de 1000. Nous utiliserons la fonction svm.SVC() de scikit-learn pour créer le classifieur SVM.

from sklearn import svm

## ajuster le modèle SVM
clf = svm.SVC(kernel="linear", C=1000)
clf.fit(X, y)

Tracer l'hyperplan séparateur à marge maximale

Pour tracer l'hyperplan séparateur à marge maximale, nous utiliserons la fonction DecisionBoundaryDisplay.from_estimator() de scikit-learn. Cette fonction trace la fonction de décision et les vecteurs de support du classifieur SVM. Nous tracerons également les vecteurs de support sous forme de cercles sans remplissage et avec une bordure noire.

from sklearn.inspection import DecisionBoundaryDisplay

## tracer la fonction de décision et les vecteurs de support
ax = plt.gca()
DecisionBoundaryDisplay.from_estimator(
    clf,
    X,
    plot_method="contour",
    colors="k",
    levels=[-1, 0, 1],
    alpha=0.5,
    linestyles=["--", "-", "--"],
    ax=ax,
)
ax.scatter(
    clf.support_vectors_[:, 0],
    clf.support_vectors_[:, 1],
    s=100,
    linewidth=1,
    facecolors="none",
    edgecolors="k",
)
plt.show()

Résumé

Dans ce laboratoire, nous avons appris à créer un ensemble de données séparable en deux classes, à ajuster un modèle SVM utilisant un noyau linéaire et à tracer l'hyperplan séparateur à marge maximale à l'aide de scikit-learn. L'SVM est un algorithme de classification puissant qui peut être utilisé pour une variété d'applications, y compris la classification d'images, la classification de textes et l'informatique bio.