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 :
kernelle type de frontière (linéaire, rbf, poly)Cla pénalité d’erreur / la régularisationgammala 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 5xEstimations 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
- Théorie des SVM : marges et vecteurs de support
- Astuce du noyau : RBF, polynomial et sigmoïde
- SVM pour la classification avec sklearn
- SVM pour la régression (SVR)