Scikit Learn - Régression logistique

La régression logistique, malgré son nom, est un algorithme de classification plutôt qu'un algorithme de régression. Sur la base d'un ensemble donné de variables indépendantes, il est utilisé pour estimer une valeur discrète (0 ou 1, oui / non, vrai / faux). Il est également appelé logit ou MaxEnt Classifier.

Fondamentalement, il mesure la relation entre la variable dépendante catégorielle et une ou plusieurs variables indépendantes en estimant la probabilité d'occurrence d'un événement à l'aide de sa fonction logistique.

sklearn.linear_model.LogisticRegression est le module utilisé pour implémenter la régression logistique.

Paramètres

Le tableau suivant répertorie les paramètres utilisés par Logistic Regression module -

Sr.Non Paramètre et description
1

penalty - str, 'L1', 'L2', 'elasticnet' ou aucun, facultatif, par défaut = 'L2'

Ce paramètre permet de spécifier la norme (L1 ou L2) utilisée en pénalisation (régularisation).

2

dual - Booléen, facultatif, par défaut = False

Il est utilisé pour la formulation double ou primale alors que la formulation double n'est implémentée que pour la pénalité L2.

3

tol - float, facultatif, par défaut = 1e-4

Il représente la tolérance pour les critères d'arrêt.

4

C - float, facultatif, par défaut = 1.0

Il représente l'inverse de la force de régularisation, qui doit toujours être un flottant positif.

5

fit_intercept - Booléen, facultatif, par défaut = True

Ce paramètre spécifie qu'une constante (biais ou interception) doit être ajoutée à la fonction de décision.

6

intercept_scaling - float, facultatif, par défaut = 1

Ce paramètre est utile lorsque

  • la solver ‘liblinear’ est utilisé

  • fit_intercept est défini sur true

sept

class_weight - dict ou 'balancé' facultatif, par défaut = aucun

Il représente les poids associés aux classes. Si nous utilisons l'option par défaut, cela signifie que toutes les classes sont supposées avoir un poids un. Par contre, si vous choisissez class_weight: balancé, il utilisera les valeurs de y pour ajuster automatiquement les poids.

8

random_state - int, instance RandomState ou None, facultatif, par défaut = aucun

Ce paramètre représente la graine du nombre pseudo aléatoire généré qui est utilisé lors du brassage des données. Voici les options

  • int - dans ce cas, random_state est la graine utilisée par le générateur de nombres aléatoires.

  • RandomState instance- dans ce cas, random_state est le générateur de nombres aléatoires.

  • None - dans ce cas, le générateur de nombres aléatoires est l'instance RandonState utilisée par np.random.

9

solver - str, {'newton-cg', 'lbfgs', 'liblinear', 'saag', 'saga'}, optionnel, default = 'liblinear'

Ce paramètre représente l'algorithme à utiliser dans le problème d'optimisation. Voici les propriétés des options sous ce paramètre -

  • liblinear- C'est un bon choix pour les petits ensembles de données. Il gère également la pénalité L1. Pour les problèmes multiclasses, il est limité aux schémas «un contre repos».

  • newton-cg - Il ne gère que la pénalité L2.

  • lbfgs- Pour les problèmes multiclasses, il gère la perte multinomiale. Il ne gère également que la pénalité L2.

  • saga- C'est un bon choix pour les grands ensembles de données. Pour les problèmes multiclasses, il gère également la perte multinomiale. En plus de la pénalité L1, il prend également en charge la pénalité «élastiquenet».

  • sag- Il est également utilisé pour les grands ensembles de données. Pour les problèmes multiclasses, il gère également la perte multinomiale.

dix

max_iter - int, facultatif, par défaut = 100

Comme son nom l'indique, il représente le nombre maximum d'itérations nécessaires pour que les solveurs convergent.

11

multi_class - str, {'ovr', 'multinomial', 'auto'}, optionnel, default = 'ovr'

  • ovr - Pour cette option, un problème binaire est adapté pour chaque étiquette.

  • multimonial- Pour cette option, la perte minimisée est l'ajustement de la perte multinomiale sur toute la distribution de probabilité. Nous ne pouvons pas utiliser cette option si solver = 'liblinear'.

  • auto - Cette option sélectionnera 'ovr' si solveur = 'liblinear' ou les données sont binaires, sinon elle choisira 'multinomial'.

12

verbose - int, facultatif, par défaut = 0

Par défaut, la valeur de ce paramètre est 0 mais pour les solveurs liblinear et lbfgs, nous devons définir verbose sur n'importe quel nombre positif.

13

warm_start - booléen, facultatif, par défaut = faux

Avec ce paramètre défini sur True, nous pouvons réutiliser la solution de l'appel précédent pour l'ajuster comme initialisation. Si nous choisissons default, c'est-à-dire false, cela effacera la solution précédente.

14

n_jobs - int ou None, facultatif, par défaut = None

Si multi_class = 'ovr', ce paramètre représente le nombre de cœurs CPU utilisés lors de la parallélisation sur des classes. Il est ignoré lorsque solveur = 'liblinear'.

15

l1_ratio - float ou None, optionnel, dgtefault = None

Il est utilisé dans le cas où pénalité = 'élastiquenet'. Il s'agit essentiellement du paramètre de mixage Elastic-Net avec 0 <= l1_ratio> = 1.

Les attributs

Le tableau suivant comprend les attributs utilisés par Logistic Regression module -

Sr.Non Attributs et description
1

coef_ - tableau, forme (n_features,) ou (n_classes, n_features)

Il est utilisé pour estimer les coefficients des caractéristiques dans la fonction de décision. Lorsque le problème donné est binaire, il est de la forme (1, n_features).

2

Intercept_ - tableau, forme (1) ou (n_classes)

Il représente la constante, également appelée biais, ajoutée à la fonction de décision.

3

classes_ - tableau, forme (n_classes)

Il fournira une liste d'étiquettes de classe connues du classificateur.

4

n_iter_ - tableau, forme (n_classes) ou (1)

Il renvoie le nombre réel d'itérations pour toutes les classes.

Exemple d'implémentation

Le script Python suivant fournit un exemple simple de mise en œuvre de la régression logistique sur iris ensemble de données de scikit-learn -

from sklearn import datasets
from sklearn import linear_model
from sklearn.datasets import load_iris
X, y = load_iris(return_X_y = True)
LRG = linear_model.LogisticRegression(
   random_state = 0,solver = 'liblinear',multi class = 'auto'
)
.fit(X, y)
LRG.score(X, y)

Production

0.96

La sortie montre que le modèle de régression logistique ci-dessus a donné une précision de 96%.