Introduction à la régression logistique
La régression logistique est un algorithme de classification d'apprentissage supervisé utilisé pour prédire la probabilité d'une variable cible. La nature de la variable cible ou dépendante est dichotomique, ce qui signifie qu'il n'y aurait que deux classes possibles. En termes simples, la variable dépendante est de nature binaire ayant des données codées soit 1 (signifie succès / oui) ou 0 (signifie échec / non). Mathématiquement, un modèle de régression logistique prédit P (Y = 1) en fonction de X. C'est l'un des algorithmes ML les plus simples qui peut être utilisé pour divers problèmes de classification tels que la détection de spam, la prédiction du diabète, la détection du cancer, etc. Types de régression logistique
Généralement, la régression logistique signifie la régression logistique binaire ayant des variables cibles binaires, mais il peut y avoir deux autres catégories de variables cibles qui peuvent être prédites par elle. Sur la base de ce nombre de catégories, la régression logistique peut être divisée en types suivants -
Binaire ou binomial
Dans un tel type de classification, une variable dépendante n'aura que deux types possibles, soit 1 et 0.
Regression Logistique Python 2
Conclusions
Cet article n'avait pas pour objectif de montrer la supériorité d'un package sur un autre mais la complémentarité de ces deux packages. En effet, dans un cadre de machine learning et de modèle prédictif, scikit-learn a tous les avantages d'un package extrêmement complet avec une API très uniformisée qui vous permettra d'automatiser et de passer en production vos modèles. En parallèle, statsmodels apparaît comme un bon outil pour la modélisation statistique et l'explication de la régression logistique et il fournira des sorties rassurantes pour les utilisateurs habitués aux logiciels de statistique classique. Cet article permet aussi de noter une chose: les valeurs par défaut de tous les packages sont souvent différentes et il faut être très attentif à cela pour être capable de comparer des résultats d'un package à un autre. Pour aller plus loin
Regression Logistique Python Programming
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. 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?
Regression Logistique Python Tutorial
On voit bien que cette sortie ne nous est pas d'une grande utilitée. Scikit-learn deviendra intéressant lorsqu'on enchaîne des modèles et qu'on essaye de valider les modèles sur des échantillons de validation. Pour plus de détails sur ces approches, vous trouverez un article ici. Vous pouvez aussi trouver des informations sur cette page GitHub associée à l'ouvrage Python pour le data scientsit. Le cas statsmodels
Attention! Statsmodels décide par défaut qu'il n'y a pas de constante, il faut ajouter donc une colonne dans les données pour la constante, on utilise pour cela un outil de statsmodels:
# on ajoute une colonne pour la constante
x_stat = d_constant(x)
# on ajuste le modèle
model = (y, x_stat)
result = ()
Une autre source d'erreur vient du fait que la classe Logit attend en premier les variables nommées endogènes (qu'on désire expliquer donc le y) et ensuite les variables exogènes (qui expliquent y donc le x). cette approche est inversée par rapport à scikit-learn. On obitent ensuite un résumé du modèle beaucoup plus lisible:
mmary()
On a dans ce cas tous les détails des résultats d'une régression logistique avec notamment, les coefficients (ce sont les mêmes qu'avec scikit-learn) mais aussi des intervalles de confiance, des p-valeurs et des tests d'hypothèses classiques en statistique.
Regression Logistique Python Online
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. 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.
Regression Logistique Python Download
Vous pouvez examiner l'ensemble du tableau pour trier les clients potentiels. Pour ce faire, utilisez l'extrait de code Python suivant -
In [26]: for x in range(len(predicted_y)):
if (predicted_y[x] == 1):
print(x, end="\t")
La sortie de l'exécution du code ci-dessus est indiquée ci-dessous -
La sortie montre les index de toutes les lignes qui sont des candidats probables pour l'abonnement à TD. Vous pouvez maintenant donner cette sortie à l'équipe marketing de la banque qui récupère les coordonnées de chaque client de la ligne sélectionnée et poursuit son travail. Avant de mettre ce modèle en production, nous devons vérifier l'exactitude de la prédiction. Vérification de l'exactitude
Pour tester la précision du modèle, utilisez la méthode de score sur le classificateur comme indiqué ci-dessous -
In [27]: print('Accuracy: {:. 2f}'((X_test, Y_test)))
La sortie d'écran de l'exécution de cette commande est indiquée ci-dessous -
Accuracy: 0. 90
Cela montre que la précision de notre modèle est de 90%, ce qui est considéré comme très bon dans la plupart des applications.
Ce dataset décrit les espèces d'Iris par quatre propriétés: longueur et largeur de sépales ainsi que longueur et largeur de pétales. La base de données comporte 150 observations (50 observations par espèce). Pour plus d'informations, Wikipedia fournit des informations abondantes sur ce dataset. Lors de cette section, je vais décrire les différents étapes que vous pouvez suivre pour réussir cette implémentation:
Chargement des bibliothèques:
Premièrement, nous importons les bibliothèques numpy, pyplot et sklearn. Scikit-Learn vient avec un ensemble de jeu de données prêt à l'emploi pour des fins d'expérimentation. Ces dataset sont regroupés dans le package sets. On charge le package datasets pour retrouver le jeu de données IRIS. #import des librairies l'environnement%matplotlib inline
import numpy as np
import as plt
from sklearn import datasets
Chargement du jeu de données IRIS
Pour charger le jeu de données Iris, on utilise la méthode load_iris() du package datasets. #chargement de base de données iris
iris = datasets.
Les taches de chocolat se nettoient à l'aide d'une brosse humide candi pour enlever une tache d'épinard, il vous faudra frotter la surface avec la chair d'une pomme de terre crue. Pour enlever les taches de curcuma, laissez la nappe quelques minutes au soleil puis tapotez pour enlever le reste. Qu'est ce qu'une nappe enduite ? - Fais Pas le Malin. Les traces d'œufs partiront facilement si vous frottez un peu de sel dessus et pour les taches de carottes, utilisez de l'eau oxygénée. À éviter pour préserver la qualité de la nappe
Pour éviter que votre nappe ne tienne même pas un mois et commence à se froisser et à se craqueler, pensez à ne pas l'utiliser n'importe comment. Que cela concerne le lavage, le repassage, le traitement des taches ou encore le découpage, il y a certaines astuces intéressantes à connaitre et que vous pourrez appliquer si nécessaire. La coupe de la nappe
Le traçage du tissu se fait avec un feutre effaçable et seulement sur l'envers de la nappe. Oubliez les marqueurs, car ils laissent des traces et les craies qui ne marquent pas assez.
Laver Une Nappe En Toile Enduit De Façade
Elle se nettoie à la brosse avec de l'eau savonneuse. Nous vous recommandons d'utiliser du savon de Marseille. La toile peut se rétracter, mais retrouvera sa taille initiale. Évitez de passer la toile en machine ou de l'immerger car elle risquerait de trop se rétracter.
Lorsque vous renversez un liquide sur la toile enduite, tamponnez avec une éponge jusqu'à absorption. Pour conserver les propriétés de l' enduit, la toile supporte un lavage en machine à 30°C sans essorage et sans adoucissant car ils cassent la fibre de la toile enduite. Le lavage est à faire deux fois par an maximum. Conseils de lavage pour vos nappes enduites: Il se fait en machine à laver avec une lessive classique à 30°C ou 40°C degrés, sans assouplissant, suivi d'un léger essorage. Laver une nappe en toile enduits à la chaux. Vous pouvez, si votre nappe le nécessite, ajouter un peu d'eau de Javel dans votre cycle de lavage. Frottez la toile avec un tampon imbibé d'huile camphrée. Frottez-la avec un peu de citron. Autre solution: frottez avec un mélange composé à parts égales d' alcool à 90° et de vinaigre blanc, puis rincez. C'est quoi un tissu enduit? Une toile cirée (ou toile enduite) est un tissu, habituellement de coton ou de lin, traité avec du vernis à base d'huile de lin pour le rendre hydrofuge. Très souvent, on ne recouvre les toiles d'un enduit que d'un côté seulement.