0Pricing
Learn AI with Python · Leçon

SVM pour la classification avec sklearn

SVC, LinearSVC, sélection du noyau, class_weight='balanced', probability=True.

SVM pour la classification avec sklearn est une leçon Learn AI with Python gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Learn AI with Python, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Learn AI with Python comprend 4 leçons au total.

Les SVM dans scikit-learn

scikit-learn propose plusieurs classifieurs SVM. Le principal est SVC, qui prend en charge les frontières linéaires et à noyau grâce à son paramètre kernel.

from sklearn.svm import SVC

model = SVC(kernel="rbf", C=1.0, gamma="scale")
model.fit(Xtr, ytr)
print(model.score(Xte, yte))

Les paramètres essentiels de SVC

Trois paramètres déterminent le comportement de SVC :

  • kernel le type de frontière (linéaire, rbf, poly)
  • C la pénalité d’erreur / la régularisation
  • gamma la largeur du noyau pour rbf/poly
from sklearn.svm import SVC

model = SVC(kernel="rbf", C=10, gamma=0.1)

Toujours mettre à l’échelle en premier

Les SVM sont sensibles à l’échelle. Placez le normalisateur et SVC dans une chaîne de traitement afin que la mise à l’échelle soit effectuée par fit uniquement sur les données d’entraînement, même pendant la validation croisée.

from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC

pipe = make_pipeline(StandardScaler(), SVC(kernel="rbf"))
pipe.fit(Xtr, ytr)

LinearSVC pour les grands jeux de données

SVC(kernel="linear") s’adapte mal à un grand nombre d’échantillons. LinearSVC utilise un solveur plus rapide, optimisé pour les problèmes linéaires, et gère bien mieux les données volumineuses et de grande dimension.

from sklearn.svm import LinearSVC

model = LinearSVC(C=1.0, max_iter=5000)
model.fit(Xtr, ytr)

SVC ou LinearSVC

Utilisez LinearSVC pour les données volumineuses ou creuses, comme les données textuelles. Utilisez SVC lorsque vous avez besoin de noyaux pour obtenir des frontières non linéaires. Notez que LinearSVC utilise une fonction de perte légèrement différente et ne fournit pas predict_proba.

Déséquilibre des classes

Lorsqu’une classe est rare, le SVM tend à favoriser la classe majoritaire. Définir class_weight="balanced" pondère automatiquement les classes de manière inversement proportionnelle à leur fréquence.

from sklearn.svm import SVC

model = SVC(kernel="rbf", class_weight="balanced")
model.fit(Xtr, ytr)

Pondérations personnalisées des classes

Vous pouvez également transmettre un dictionnaire explicite à class_weight afin d'accorder davantage d'importance à une classe donnée qu'avec l'équilibrage automatique.

from sklearn.svm import SVC

model = SVC(class_weight={0: 1, 1: 5})  # class 1 errors cost 5x

Estimations de probabilité

Par défaut, SVC renvoie des étiquettes discrètes. Définissez probability=True pour activer predict_proba (grâce à un calibrage interne), nécessaire pour la ROC AUC et le réglage du seuil. Cela ralentit l'entraînement.

from sklearn.svm import SVC

model = SVC(probability=True)
model.fit(Xtr, ytr)
proba = model.predict_proba(Xte)[:, 1]

SVM multiclasse

SVC gère automatiquement plus de deux classes grâce à une stratégie un contre un. Vous ne modifiez pas votre code : utilisez simplement fit avec des étiquettes multiclasse, et cela fonctionne.

from sklearn.svm import SVC

model = SVC(decision_function_shape="ovr")
model.fit(X_multiclass, y_multiclass)

Réglage de C et gamma avec GridSearchCV

La méthode standard consiste à effectuer une recherche sur grille pour C et gamma sur une échelle logarithmique, le tout dans une chaîne de mise à l'échelle.

from sklearn.model_selection import GridSearchCV
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC

pipe = make_pipeline(StandardScaler(), SVC(kernel="rbf"))
param = {
    "svc__C": [0.1, 1, 10, 100],
    "svc__gamma": [0.001, 0.01, 0.1, 1],
}
gs = GridSearchCV(pipe, param, cv=5, scoring="f1")
gs.fit(Xtr, ytr)
print(gs.best_params_)

Conseils pratiques

Les SVM sont particulièrement performants sur les jeux de données petits à moyens présentant des marges nettes. Ils rencontrent des difficultés avec les volumes de données très importants (utilisez LinearSVC ou passez à des méthodes de renforcement par gradient). Standardisez toujours les données, réglez C et gamma, et utilisez class_weight en cas de déséquilibre.

Vérification rapide

Évaluez vos connaissances sur les SVM de sklearn.

Récapitulatif

Récapitulatif : utilisez SVC avec kernel, C et gamma pour la classification non linéaire, toujours dans une chaîne de mise à l'échelle. Préférez LinearSVC pour les jeux de données volumineux ou textuels. Gérez le déséquilibre avec class_weight="balanced", et réglez conjointement C et gamma avec GridSearchCV.

Questions Fréquemment Posées

La leçon « SVM pour la classification avec sklearn » est-elle gratuite ?

Oui — le texte complet de « SVM pour la classification avec sklearn » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Learn AI with Python, passe à CoddyKit PRO. Le cours Learn AI with Python comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « SVM pour la classification avec sklearn » ?

SVC, LinearSVC, sélection du noyau, class_weight='balanced', probability=True. Tu pratiques Learn AI with Python avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Learn AI with Python ?

Aucune expérience préalable n'est requise. Learn AI with Python sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « SVM pour la classification avec sklearn » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Learn AI with Python ?

Oui. Chaque leçon Learn AI with Python inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Théorie des SVM : marges et vecteurs de support
  2. Astuce du noyau : RBF, polynomial et sigmoïde
  3. SVM pour la classification avec sklearn
  4. SVM pour la régression (SVR)
← Retour à Learn AI with Python