Classification SVM à l'aide d'un noyau personnalisé

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 allons apprendre à utiliser les Machines à Vecteurs de Support (SVM) pour classifier un échantillon à l'aide d'un noyau personnalisé. Nous utiliserons la bibliothèque scikit-learn de Python pour effectuer une classification SVM avec un noyau personnalisé. Les SVM sont un algorithme d'apprentissage automatique populaire utilisé pour la classification, la régression et la détection d'anomalies. Les SVM fonctionnent en créant une frontière ou une ligne (hyperplan) qui sépare les données en 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 de notes 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"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/ModelSelectionandEvaluationGroup -.-> sklearn/inspection("Inspection") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/inspection -.-> lab-49097{{"Classification SVM à l'aide d'un noyau personnalisé"}} ml/sklearn -.-> lab-49097{{"Classification SVM à l'aide d'un noyau personnalisé"}} end

Importation des bibliothèques

Dans cette étape, nous allons importer les bibliothèques nécessaires pour ce laboratoire. Nous utiliserons numpy, matplotlib, scikit-learn et DecisionBoundaryDisplay.

import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm, datasets
from sklearn.inspection import DecisionBoundaryDisplay

Charger les données

Dans cette étape, nous allons charger l'ensemble de données iris à l'aide du module datasets de scikit-learn. Nous sélectionnerons les deux premières caractéristiques de l'ensemble de données et nous les assignerons à la variable X. Nous assignerons également la variable cible à Y.

iris = datasets.load_iris()
X = iris.data[:, :2]
Y = iris.target

Créer un noyau personnalisé

Dans cette étape, nous allons créer un noyau personnalisé. Le noyau personnalisé sera un produit scalaire de deux matrices. Nous allons créer une matrice M avec les valeurs [[2, 0], [0, 1,0]]. Nous multiplierons ensuite les matrices X et Y par M et prendrons leur produit scalaire.

def my_kernel(X, Y):
    """
    Nous créons un noyau personnalisé :

                 (2  0)
    k(X, Y) = X  (    ) Y.T
                 (0  1)
    """
    M = np.array([[2, 0], [0, 1.0]])
    return np.dot(np.dot(X, M), Y.T)

Créer un classifieur SVM

Dans cette étape, nous allons créer une instance du classifieur SVM et ajuster nos données. Nous utiliserons le noyau personnalisé créé dans l'étape précédente.

clf = svm.SVC(kernel=my_kernel)
clf.fit(X, Y)

Tracer la frontière de décision

Dans cette étape, nous allons tracer la surface de décision et les vecteurs de support. Nous utiliserons le module DecisionBoundaryDisplay du module d'inspection de scikit-learn pour tracer la frontière de décision. Nous tracerons également les points d'entraînement en nuage de points.

ax = plt.gca()
DecisionBoundaryDisplay.from_estimator(
    clf,
    X,
    cmap=plt.cm.Paired,
    ax=ax,
    response_method="predict",
    plot_method="pcolormesh",
    shading="auto",
)

plt.scatter(X[:, 0], X[:, 1], c=Y, cmap=plt.cm.Paired, edgecolors="k")
plt.title("Classification à 3 classes utilisant la Machine à Vecteurs de Support avec noyau personnalisé")
plt.axis("tight")
plt.show()

Sommaire

Dans ce laboratoire, nous avons appris à utiliser les Machines à Vecteurs de Support (SVM) pour classifier un échantillon à l'aide d'un noyau personnalisé. Nous avons utilisé la bibliothèque scikit-learn pour effectuer une classification SVM avec un noyau personnalisé. Nous avons chargé l'ensemble de données iris, créé un noyau personnalisé, créé une instance du classifieur SVM et ajusté nos données, et tracé la frontière de décision et les vecteurs de support. Les SVM sont un algorithme d'apprentissage automatique populaire utilisé pour la classification, la régression et la détection d'anomalies.