Régression logistique multi-classes

Classifieurs linéaires en Python

Michael (Mike) Gelbart

Instructor, The University of British Columbia

Combiner des classificateurs binaires avec one-vs-rest

lr0.fit(X, y==0)

lr1.fit(X, y==1)

lr2.fit(X, y==2)
# get raw model output
lr0.decision_function(X)[0]
6.124
lr1.decision_function(X)[0]
-5.429
lr2.decision_function(X)[0]
-7.532
lr = LogisticRegression(multi_class='ovr')
lr.fit(X, y)

lr.predict(X)[0]
0
Classifieurs linéaires en Python

One-vs-rest :

  • ajuster un classificateur binaire par classe
  • prédire avec tous, garder la sortie la plus grande
  • atout : simple, modulaire
  • limite : n'optimise pas l'exactitude directement
  • courant aussi pour les SVM
  • peut produire des probabilités

« Multinomial » ou « softmax » :

  • ajuster un seul classificateur pour toutes les classes
  • la prédiction renvoie directement la meilleure classe
  • limite : plus complexe, nouveau code
  • atout : traite le problème directement
  • possible pour les SVM, mais moins courant
  • peut produire des probabilités
Classifieurs linéaires en Python

Coefficients du modèle en multi-classes

lr_ovr = LogisticRegression(multi_class='ovr') 

lr_ovr.fit(X,y)

lr_ovr.coef_.shape
(3,13)
lr_ovr.intercept_.shape
(3,)
lr_mn = LogisticRegression(multi_class="multinomial")
lr_mn.fit(X,y)

lr_mn.coef_.shape
(3,13)
lr_mn.intercept_.shape
(3,)
Classifieurs linéaires en Python

Passons à la pratique !

Classifieurs linéaires en Python

Preparing Video For Download...