Implementace logistické regrese
Toto cvičení je velmi podobné předchozímu, kde jsi implementoval/a lineární regresi „od nuly" pomocí scipy.optimize.minimize. Tentokrát ale minimalizujeme logistickou ztrátu a porovnáme výsledek s LogisticRegression ze scikit-learn (hodnotu C jsme nastavili na vysoké číslo, abychom vypnuli regularizaci – více o tom v kapitole 3!).
Funkce log_loss() z předchozího cvičení je v prostředí již definovaná a dataset pro predikci rakoviny prsu ze sklearn (prvních 10 příznaků, standardizovaných) je načtený do proměnných X a y.
Toto cvičení je součástí kurzu
Linear Classifiers in Python
Pokyny k cvičení
- Zadej počet trénovacích příkladů do funkce
range(). - Doplň ztrátovou funkci pro logistickou regresi.
- Porovnej koeficienty s výsledky
LogisticRegressionze sklearn.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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_)