Implémenter la régression logistique
Cet exercice ressemble beaucoup à celui d'avant où vous avez implanté une régression linéaire « from scratch » à l'aide de scipy.optimize.minimize. Cette fois, toutefois, nous allons minimiser la perte logistique et comparer avec LogisticRegression de scikit-learn (nous avons réglé C à une grande valeur pour désactiver la régularisation; plus de détails au chapitre 3!).
La fonction log_loss() de l'exercice précédent est déjà définie dans votre environnement, et l'ensemble de données de prédiction du cancer du sein de sklearn (premières 10 caractéristiques, normalisées) est chargé dans les variables X et y.
Cette activité fait partie du cours
Classificateurs linéaires en Python
Instructions de l’exercice
- Entrez le nombre d'exemples d'entraînement dans
range(). - Complétez la fonction de perte pour la régression logistique.
- Comparez les coefficients à ceux de
LogisticRegressionde sklearn.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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_)