Classification SVM non linéaire

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

Ce laboratoire vous guidera tout au long du processus de classification binaire en utilisant une Machine à Vecteurs de Support (Support Vector Machine - SVM) non linéaire avec un noyau de Fonction de Base Radiale (Radial Basis Function - RBF). La cible à prédire est un OU exclusif (XOR) des entrées. La carte de couleurs illustre la fonction de décision apprise par la SVM. Nous utiliserons la bibliothèque Python scikit-learn pour cette tâche.

Conseils pour la Machine Virtuelle (VM)

Une fois que la machine virtuelle a démarré, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Notebook et accéder au Jupyter Notebook pour pratiquer.

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

Si vous rencontrez des problèmes lors de votre apprentissage, n'hésitez pas à demander de l'aide à 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 ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills ml/sklearn -.-> lab-49309{{"Classification SVM non linéaire"}} end

Importation des bibliothèques nécessaires

Dans cette étape, nous allons importer les bibliothèques nécessaires pour cette tâche. Nous utiliserons numpy et matplotlib pour la visualisation des données, et scikit-learn pour la classification SVM.

import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm

Génération des données

Dans cette étape, nous allons générer les données pour entraîner et tester le classifieur SVM. Nous allons générer 300 points de données aléatoires avec deux caractéristiques. La cible à prédire est un OU exclusif (XOR) des entrées.

np.random.seed(0)
X = np.random.randn(300, 2)
Y = np.logical_xor(X[:, 0] > 0, X[:, 1] > 0)

Entraînement du modèle

Dans cette étape, nous allons entraîner le classifieur SVM avec un noyau RBF en utilisant les données générées.

clf = svm.NuSVC(gamma="auto")
clf.fit(X, Y)

Visualisation de la fonction de décision

Dans cette étape, nous allons visualiser la fonction de décision apprise par la SVM. Nous allons créer une grille de points et utiliser le classifieur SVM pour prédire la classe de chaque point. Nous allons ensuite tracer les points avec leurs classes respectives et la frontière de décision apprise par la SVM.

xx, yy = np.meshgrid(np.linspace(-3, 3, 500), np.linspace(-3, 3, 500))
Z = clf.decision_function(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)

plt.imshow(
    Z,
    interpolation="nearest",
    extent=(xx.min(), xx.max(), yy.min(), yy.max()),
    aspect="auto",
    origin="lower",
    cmap=plt.cm.PuOr_r,
)
contours = plt.contour(xx, yy, Z, levels=[0], linewidths=2, linestyles="dashed")
plt.scatter(X[:, 0], X[:, 1], s=30, c=Y, cmap=plt.cm.Paired, edgecolors="k")
plt.xticks(())
plt.yticks(())
plt.axis([-3, 3, -3, 3])
plt.show()

Résumé

Dans ce laboratoire, nous avons appris à effectuer une classification binaire en utilisant une SVM non linéaire avec un noyau RBF. Nous avons généré des données avec deux caractéristiques et une cible XOR à prédire. Nous avons entraîné le classifieur SVM en utilisant les données générées et visualisé la fonction de décision apprise par la SVM.