Regressione logistica multi-classe

Classificatori lineari in Python

Michael (Mike) Gelbart

Instructor, The University of British Columbia

Combinare classificatori binari con 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
Classificatori lineari in Python

One-vs-rest:

  • allena un classificatore binario per ogni classe
  • predici con tutti, prendi l'output più grande
  • pro: semplice, modulare
  • contro: non ottimizza direttamente l'accuratezza
  • comune anche per le SVM
  • può produrre probabilità

"Multinomial" o "softmax":

  • allena un singolo classificatore per tutte le classi
  • la previsione restituisce direttamente la classe migliore
  • contro: più complesso, codice nuovo
  • pro: affronta il problema direttamente
  • possibile per le SVM, ma meno comune
  • può produrre probabilità
Classificatori lineari in Python

Coefficienti del modello per il multi-classe

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,)
Classificatori lineari in Python

Esercitiamoci!

Classificatori lineari in Python

Preparing Video For Download...