IniziaInizia gratis

Implementare la regressione logistica

Questo esercizio è molto simile a quello precedente, in cui hai implementato la regressione lineare "da zero" usando scipy.optimize.minimize. Questa volta però minimizzeremo la loss logistica e la confronteremo con LogisticRegression di scikit-learn (abbiamo impostato C a un valore grande per disattivare la regolarizzazione; ne parleremo nel Capitolo 3!).

La funzione log_loss() dell'esercizio precedente è già definita nel tuo ambiente e il dataset di previsione sul tumore al seno di sklearn (prime 10 feature, standardizzate) è caricato nelle variabili X e y.

Questo esercizio fa parte del corso

Classificatori lineari in Python

Visualizza il corso

Istruzioni dell'esercizio

  • Inserisci il numero di esempi di training in range().
  • Compila la funzione di loss per la regressione logistica.
  • Confronta i coefficienti con LogisticRegression di sklearn.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# The logistic loss, summed over training examples
def my_loss(w):
    s = 0
    for i in range(____):
        raw_model_output = w@X[i]
        s = s + ____(raw_model_output * y[i])
    return s

# Returns the w that makes my_loss(w) smallest
w_fit = minimize(my_loss, X[0]).x
print(w_fit)

# Compare with scikit-learn's LogisticRegression
lr = LogisticRegression(fit_intercept=False, C=1000000).fit(X,y)
print(lr.coef_)
Modifica ed esegui il codice