CommencerCommencer gratuitement

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

Afficher le cours

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 LogisticRegression de 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_)
Modifier et exécuter le code