CommencezCommencez gratuitement

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

Voir le cours

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