Implementarea regresiei logistice
Acest exercițiu este foarte asemănător cu cel anterior, în care ai implementat regresia liniară „de la zero" folosind scipy.optimize.minimize. De data aceasta, însă, vom minimiza pierderea logistică și o vom compara cu LogisticRegression din scikit-learn (am setat C la o valoare mare pentru a dezactiva regularizarea; despre asta vom vorbi mai mult în Capitolul 3!).
Funcția log_loss() din exercițiul anterior este deja definită în mediul tău, iar setul de date pentru predicția cancerului de sân din sklearn (primele 10 caracteristici, standardizate) este încărcat în variabilele X și y.
Acest exercițiu face parte din cursul
Clasificatori liniari în Python
Instrucțiuni pentru exercițiu
- Introdu numărul de exemple de antrenament în
range(). - Completează funcția de pierdere pentru regresia logistică.
- Compară coeficienții cu cei ai
LogisticRegressiondin sklearn.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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_)