Logistische Regression implementieren
Das ist sehr ähnlich zur früheren Übung, in der du lineare Regression „from scratch“ mit scipy.optimize.minimize implementiert hast. Diesmal minimieren wir jedoch die logistische Loss und vergleichen das Ergebnis mit scikit‑learns LogisticRegression (wir haben C auf einen großen Wert gesetzt, um die Regularisierung zu deaktivieren; mehr dazu in Kapitel 3!).
Die Funktion log_loss() aus der vorherigen Übung ist in deiner Umgebung bereits definiert, und der sklearn-Datensatz zur Vorhersage von Brustkrebs (erste 10 Merkmale, standardisiert) ist in den Variablen X und y geladen.
Diese Übung ist Teil des Kurses
Lineare Klassifikatoren in Python
Anleitung zur Übung
- Übergib die Anzahl der Trainingsbeispiele an
range(). - Ergänze die Loss-Funktion für die logistische Regression.
- Vergleiche die Koeffizienten mit sklearns
LogisticRegression.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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_)