Aan de slagGa gratis aan de slag

Logistic regression implementeren

Dit lijkt erg op de eerdere oefening waarin je lineaire regressie "from scratch" implementeerde met scipy.optimize.minimize. Deze keer minimaliseren we echter de logistieke verliesfunctie en vergelijken we met scikit-learn's LogisticRegression (we hebben C op een grote waarde gezet om regularisatie uit te zetten; meer hierover in Hoofdstuk 3!).

De functie log_loss() uit de vorige oefening is al in je omgeving gedefinieerd, en de sklearn-gegevensset voor borstkankervoorspelling (eerste 10 kenmerken, gestandaardiseerd) is ingeladen in de variabelen X en y.

Deze oefening maakt deel uit van de cursus

Lineaire classificatoren in Python

Cursus bekijken

Oefeninstructies

  • Geef het aantal trainingsvoorbeelden door aan range().
  • Vul de verliesfunctie voor logistic regression in.
  • Vergelijk de coëfficiënten met sklearn's LogisticRegression.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# 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 bewerken en uitvoeren