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.
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.