SVM
Fonctions :
-
SVC()
La fonction SVC() (Support Vector Classification) permet de créer un modèle de classification basé sur les machines à vecteurs de support (SVM). Cette technique est utilisée pour classer des données en trouvant une hyperplan qui sépare au mieux les différentes classes. Elle peut également utiliser des noyaux non linéaires (comme le noyau RBF) pour traiter des problèmes de classification complexes.
Importation :
from sklearn.svm import SVC
Attributs :
Paramètre
Description
kernel
Le type de noyau à utiliser. Par défaut, c'est 'rbf'
(Radial Basis Function). D'autres options incluent'linear'
,'poly'
,'sigmoid'
et'precomputed'
.C
Le paramètre de régularisation. Par défaut, il est égal à 1.0
. Plus il est grand, plus le modèle sera sensible aux erreurs de classification. Un petitC
permet un modèle plus lisse.degree
Le degré du polynôme pour les noyaux polynomiaux. Par défaut, il est égal à 3
. Il n'a d'impact que sikernel
est'poly'
.gamma
Le paramètre gamma pour les noyaux 'rbf', 'poly', et 'sigmoid'. Par défaut, il est égal à 'scale'
, ce qui signifie quegamma = 1 / (n_features * X.var())
. Sigamma = 'auto'
, alorsgamma = 1 / n_features
.coef0
Le paramètre indépendant dans les noyaux 'poly' et 'sigmoid'. Par défaut, il est égal à 0.0
.probability
Si True
, l'algorithme va calculer les probabilités de classe en plus des décisions de classe, ce qui permet d'utiliserpredict_proba()
pour obtenir ces probabilités. Par défaut, il est égal àFalse
.shrinking
Si True
, l'optimisation sera effectuée avec l'algorithme de shrinking, ce qui peut accélérer l'entraînement. Par défaut, il est égal àTrue
.tol
Le critère de tolérance pour l'arrêt de l'optimisation. Par défaut, il est égal à 1e-3
.max_iter
Le nombre maximal d'itérations pour l'optimisation. Par défaut, il est égal à -1
, ce qui signifie qu'il n'y a pas de limite.Exemple de code :
# Importation de la classe SVC from sklearn.svm import SVC # Création du modèle SVM avec un noyau RBF et un paramètre C égal à 1 model = SVC(kernel='rbf', C=1.0, gamma='scale') # Exemple de données d'entrée (X) et les labels associés (y) X = [[0, 0], [1, 1], [2, 2], [3, 3]] y = [0, 1, 1, 0] # Entraînement du modèle sur les données model.fit(X, y) # Prédiction des classes pour de nouvelles données predictions = model.predict([[1.5, 1.5]]) # Affichage des résultats print(predictions)
Explication du code :
Création du modèle SVM
model = SVC(kernel='rbf', C=1.0, gamma='scale')
crée un modèle SVM avec les paramètres suivants :kernel='rbf'
: le noyau RBF (Radial Basis Function) permet de gérer des frontières de décision non linéaires.C=1.0
: paramètre de régularisation. Une valeur plus élevée donne plus d’importance à l’exactitude sur les données d'entraînement (moins de marge d’erreur).gamma='scale'
: définit automatiquement la valeur degamma
(contrôle l’influence d’un seul exemple d’entraînement) en fonction des données.Données d’entrée
X = [[0, 0], [1, 1], [2, 2], [3, 3]]
définit les exemples d’entrée avec deux caractéristiques chacun (x₁, x₂).y = [0, 1, 1, 0]
indique les classes associées à chaque exemple (binaire ici : 0 ou 1).Entraînement du modèle
model.fit(X, y)
entraîne le modèle SVM sur les données d’entréeX
et les étiquettesy
. Le SVM cherche à créer une frontière optimale entre les classes 0 et 1.Prédiction sur de nouvelles données
predictions = model.predict([[1.5, 1.5]])
utilise le modèle entraîné pour prédire la classe de l’exemple[1.5, 1.5]
. Le modèle estime à quelle classe appartient ce point en fonction de la frontière qu’il a apprise.Affichage des résultats
print(predictions)
affiche la classe prédite (0 ou 1) pour l’exemple fourni. Cela permet de vérifier le comportement du modèle sur des données jamais vues.