pakdoltogel.net
Lorsque la valeur prédite est supérieure à un seuil, l'événement est susceptible de se produire, alors que lorsque cette valeur est inférieure au même seuil, il ne l'est pas. Mathématiquement, comment ça se traduit/ça s'écrit? Considérons une entrée X= x 1 x 2 x 3 … x n, la régression logistique a pour objectif de trouver une fonction h telle que nous puissions calculer: y= { 1 si h X ≥ seuil, 0 si h X < seuil} On comprend donc qu'on attend de notre fonction h qu'elle soit une probabilité comprise entre 0 et 1, paramétrée par = 1 2 3 n à optimiser, et que le seuil que nous définissons correspond à notre critère de classification, généralement il est pris comme valant 0. 5. Regression logistique python c. La fonction qui remplit le mieux ces conditions est la fonction sigmoïde, définie sur R à valeurs dans [0, 1]. Elle s'écrit de la manière suivante: Graphiquement, celle-ci correspond à une courbe en forme de S qui a pour limites 0 et 1 lorsque x tend respectivement vers -∞ et +∞ passant par y = 0. 5 en x = 0. Sigmoid function Et notre classification dans tout ça?
load_iris() Comme on l'a évoqué précédemment, le dataset Iris se compose de quatre features (variables explicatives). Pour simplifier le tutoriel, on n'utilisera que les deux premières features à savoir: Sepal_length et Sepal_width. Egalement, le jeu IRIS se compose de trois classes, les étiquettes peuvent donc appartenir à l'ensemble {0, 1, 2}. Il s'agit donc d'une classification Multi-classes. La régression logistique étant un algorithme de classification binaire, je vais re-étiqueter les fleurs ayant le label 1 et 2 avec le label 1. Regression logistique python powered. Ainsi, on se retrouve avec un problème de classification binaire. # choix de deux variables X = [:, :2] # Utiliser les deux premiers colonnes afin d'avoir un problème de classification binaire. y = (! = 0) * 1 # re-étiquetage des fleurs Visualisation du jeu de données Afin de mieux comprendre notre jeu de données, il est judicieux de le visualiser. #visualisation des données (figsize=(10, 6)) tter(X[y == 0][:, 0], X[y == 0][:, 1], color='g', label='0') tter(X[y == 1][:, 0], X[y == 1][:, 1], color='y', label='1') (); On remarque que les données de la classe 0 et la classe 1 peuvent être linéairement séparées.
Chaque package a ses spécificités et notre objectif est ici d'obtenir des résultats équivalents entre scikit-learn et statmodels. Le cas scikit-learn Attention! Scikit-learn décide par défaut d'appliquer une régularisation sur le modèle. Ceci s'explique par l'objectif prédictif du machine learning mais ceci peut poser des problèmes si votre objectif est de comparer différents outils et leurs résultats (notamment R, SAS…). On utilisera donc: modele_logit = LogisticRegression(penalty='none', solver='newton-cg') (x, y) On voit qu'on n'applique pas de pénalité et qu'on prend un solver du type Newton qui est plus classique pour la régression logistique. ▷Régression logistique et régularisation dans l'exemple de code python ✔️ advancedweb.fr - 【 2022 】. Si on veut comprendre les coefficients du modèle, scikit-learn stocke les informations dans. coef_, nous allons les afficher de manière plus agréable dans un DataFrame avec la constante du modèle: Frame(ncatenate([shape(-1, 1), ef_], axis=1), index = ["coef"], columns = ["constante"]+list(lumns)). T On obtient donc: On a bien les coefficients, il faut être prudent sur leur interprétation car comme les données ne sont pas standardisées, leur interprétation dépendra de l'ordre de grandeur des échelles des variables.
Ainsi vous vous familiariserez mieux avec cet algorithme. Finalement, j'espère que cet article vous a plu. Si vous avez des questions ou des remarques, vos commentaires sont les bienvenus. Pensez à partager l'article pour en faire profiter un maximum d'intéressés. 😉