Mis a jour le 2025-04-14, 12:10

SVM

SVM pour la classification

SVC :
  • C-Support vector classification
  • from sklearn import datasets
    from sklearn import svm
    iris = datasets.load_iris()
    svm.SVC(kernel = 'rbf')
    mdl.fit(iris.data, iris.target)
    prediction = mdl.predict(iris.data)
        
  • on peut l'appliquer à plus que 2 classes (ici 3 classes).
  • paramètres de SVC :
    • kernel = 'rbf' : noyau RBF (le défaut). Sinon, peut aussi être 'linear', 'poly', 'sigmoid'.
    • C = 1 : la valeur du facteur de régularisation, vaut 1 par défaut (plus il est petit, plus la régularisation est forte).
    • degree = 3 : le degré du polynôme si kernel = 'poly'.
    • coef0 = 0 : le coefficient à rajouter au kernel pour un kernel polynomial ou sigmoide (0 par défaut)
    • gamma = 'scale' : coefficient du kernel 'rbf', 'poly' ou 'sigmoid'. 'scale' est le défaut (adaptation automatique), sinon, on peut donner une valeur positive.
    • probability = True : permet de récupérer les probabilités d'appartenance à chaque classe (défaut est False).
    • random_state = 0 : le fixer pour avoir des résultats identiques d'un run sur l'autre.
  • mdl.support_.size : le nombre de vecteurs supports.
  • mdl.support_vectors_ : les vecteurs supports.
  • mdl.predict_proba(iris.data) : les probabilités de chaque classe, si on a passé l'argument probability = True
NuSVC :
  • Similaire à SVC, mais Nu-Support vector classification, qui permet de contrôler le nombre de vecteurs de support.
  • from sklearn import datasets
    from sklearn import svm
    iris = datasets.load_iris()
    svm.NuSVC(nu = 0.5, kernel = 'rbf')
    mdl.fit(iris.data, iris.target)
    prediction = mdl.predict(iris.data)
        
  • NuSVC a le paramètre nu compris entre 0 et 1 (< 1) à la place du paramètre C.

SVM pour la regression

SVR :
  • from sklearn import datasets
    from sklearn import svm
    diabetes = datasets.load_diabetes()
    svm.SVR(kernel = 'rbf')
    mdl.fit(diabetes.data, diabetes.target)
    prediction = mdl.predict(diabetes.data)
        
  • paramètres de SVC :
    • kernel = 'rbf' : noyau RBF (le défaut). Sinon, peut aussi être 'linear', 'poly', 'sigmoid'.
    • C = 1 : la valeur du facteur de régularisation, vaut 1 par défaut (plus il est petit, plus la régularisation est forte).
    • degree = 3 : le degré du polynôme si kernel = 'poly'.
    • coef0 = 0 : le coefficient à rajouter au kernel pour un kernel polynomial ou sigmoide (0 par défaut)
    • gamma = 'scale' : coefficient du kernel 'rbf', 'poly' ou 'sigmoid'. 'scale' est le défaut (adaptation automatique), sinon, on peut donner une valeur positive.
    • random_state = 0 : le fixer pour avoir des résultats identiques d'un run sur l'autre.
  • mdl.predict_proba(diabetes.data) : les prédictions de valeurs
Kernels :
  • linéaire : <x,x'>
  • polynomial : (gamma <x,x'> + r)^d (r est coef0)
  • rbf : exp(-gamma ||x - x'||^2)
  • sigmoide : tanh(gamma <x,x'> + r)

Copyright python-simple.com
programmer en python, tutoriel python, graphes en python, Aymeric Duclert