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
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
LogisticRegressiondi 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_)