LoslegenKostenlos starten

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

<Kurs>Lineare Klassifikatoren in Python</Kurs>
Kurs ansehen

Übungsanweisungen

  • Übergib die Anzahl der Trainingsbeispiele an range().
  • Ergänze die Loss-Funktion für die logistische Regression.
  • Vergleiche die Koeffizienten mit sklearns LogisticRegression.

Interaktive praktische Übung

Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.

# 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_)
Code bearbeiten und ausführen