Zacznij terazZacznij za darmo

Implementacja regresji logistycznej

To ćwiczenie jest bardzo podobne do wcześniejszego, w którym implementowałeś regresję liniową „od zera" przy użyciu scipy.optimize.minimize. Tym razem zminimalizujesz stratę logistyczną i porównasz wyniki z klasą LogisticRegression z biblioteki scikit-learn (parametr C ustawiliśmy na dużą wartość, aby wyłączyć regularyzację – więcej na ten temat w rozdziale 3!).

Funkcja log_loss() z poprzedniego ćwiczenia jest już zdefiniowana w twoim środowisku, a zbiór danych scikit-learn dotyczący predykcji raka piersi (pierwsze 10 cech, po standaryzacji) jest wczytany do zmiennych X i y.

To ćwiczenie jest częścią kursu

Liniowe klasyfikatory w Pythonie

Zobacz kurs

Instrukcje do ćwiczenia

  • Przekaż liczbę przykładów treningowych do funkcji range().
  • Uzupełnij funkcję straty dla regresji logistycznej.
  • Porównaj współczynniki z wynikami klasy LogisticRegression z biblioteki sklearn.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# 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_)
Edytuj i uruchom kod