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