Scikit Learn - Regressione logistica

La regressione logistica, nonostante il nome, è un algoritmo di classificazione piuttosto che un algoritmo di regressione. Basato su un dato insieme di variabili indipendenti, viene utilizzato per stimare il valore discreto (0 o 1, sì / no, vero / falso). È anche chiamato logit o MaxEnt Classifier.

Fondamentalmente, misura la relazione tra la variabile dipendente categoriale e una o più variabili indipendenti stimando la probabilità di accadimento di un evento utilizzando la sua funzione logistica.

sklearn.linear_model.LogisticRegression è il modulo utilizzato per implementare la regressione logistica.

Parametri

La tabella seguente elenca i parametri utilizzati da Logistic Regression modulo -

Suor n Parametro e descrizione
1

penalty - str, 'L1', 'L2', 'elasticnet' o none, opzionale, default = 'L2'

Questo parametro viene utilizzato per specificare la norma (L1 o L2) utilizzata nella penalizzazione (regolarizzazione).

2

dual - Booleano, opzionale, predefinito = False

Viene utilizzata per la formulazione duale o primaria mentre la formulazione doppia è implementata solo per la penalità L2.

3

tol - float, opzionale, default = 1e-4

Rappresenta la tolleranza per i criteri di arresto.

4

C - float, opzionale, default = 1.0

Rappresenta l'inverso della forza di regolarizzazione, che deve essere sempre un galleggiante positivo.

5

fit_intercept - Booleano, opzionale, predefinito = True

Questo parametro specifica che una costante (bias o intercetta) deve essere aggiunta alla funzione di decisione.

6

intercept_scaling - float, opzionale, default = 1

Questo parametro è utile quando

  • il solver ‘liblinear’ si usa

  • fit_intercept è impostato su true

7

class_weight - dict o "balance" opzionale, default = nessuno

Rappresenta i pesi associati alle classi. Se usiamo l'opzione predefinita, significa che tutte le classi dovrebbero avere un peso. D'altra parte, se scegli class_weight: balance, utilizzerà i valori di y per regolare automaticamente i pesi.

8

random_state - int, istanza RandomState o None, opzionale, default = nessuno

Questo parametro rappresenta il seme del numero pseudo casuale generato che viene utilizzato durante la mescolanza dei dati. Le seguenti sono le opzioni

  • int - in questo caso, random_state è il seme utilizzato dal generatore di numeri casuali.

  • RandomState instance- in questo caso, random_state è il generatore di numeri casuali.

  • None - in questo caso, il generatore di numeri casuali è l'istanza RandonState utilizzata da np.random.

9

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

Questo parametro rappresenta l'algoritmo da utilizzare nel problema di ottimizzazione. Di seguito sono riportate le proprietà delle opzioni in questo parametro:

  • liblinear- È una buona scelta per piccoli set di dati. Gestisce anche la penalità L1. Per i problemi multiclasse, è limitato agli schemi uno contro riposo.

  • newton-cg - Gestisce solo penalità L2.

  • lbfgs- Per i problemi multiclasse, gestisce la perdita multinomiale. Gestisce anche solo penalità L2.

  • saga- È una buona scelta per set di dati di grandi dimensioni. Per i problemi multiclasse, gestisce anche la perdita multinomiale. Insieme alla penalità L1, supporta anche la penalità "elasticnet".

  • sag- Viene utilizzato anche per set di dati di grandi dimensioni. Per i problemi multiclasse, gestisce anche la perdita multinomiale.

10

max_iter - int, opzionale, default = 100

Come suggerisce il nome, rappresenta il numero massimo di iterazioni necessarie per la convergenza dei solutori.

11

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

  • ovr - Per questa opzione, un problema binario è adatto per ciascuna etichetta.

  • multimonial- Per questa opzione, la perdita minimizzata è l'adattamento della perdita multinomiale sull'intera distribuzione di probabilità. Non possiamo usare questa opzione se solver = 'liblinear'.

  • auto - Questa opzione selezionerà "ovr" se solver = "liblinear" o i dati sono binari, altrimenti sceglierà "multinomiale".

12

verbose - int, opzionale, default = 0

Per impostazione predefinita, il valore di questo parametro è 0 ma per liblinear e lbfgs solver dovremmo impostare verbose su qualsiasi numero positivo.

13

warm_start - bool, opzionale, predefinito = false

Con questo parametro impostato su True, possiamo riutilizzare la soluzione della chiamata precedente per adattarla all'inizializzazione. Se scegliamo default cioè false, cancellerà la soluzione precedente.

14

n_jobs - int o None, opzionale, default = None

Se multi_class = 'ovr', questo parametro rappresenta il numero di core della CPU utilizzati durante il parallelismo sulle classi. Viene ignorato quando solver = 'liblinear'.

15

l1_ratio - float o None, opzionale, dgtefault = None

Viene utilizzato nel caso in cui penalità = 'elasticnet'. Fondamentalmente è il parametro di miscelazione Elastic-Net con 0 <= l1_ratio> = 1.

Attributi

La tabella seguente è costituita dagli attributi utilizzati da Logistic Regression modulo -

Suor n Attributi e descrizione
1

coef_ - array, forma (n_features,) o (n_classes, n_features)

Viene utilizzato per stimare i coefficienti delle caratteristiche nella funzione di decisione. Quando il problema dato è binario, è di forma (1, n_features).

2

Intercept_ - array, forma (1) o (n_classes)

Rappresenta la costante, nota anche come bias, aggiunta alla funzione decisionale.

3

classes_ - array, forma (n_classes)

Fornirà un elenco di etichette di classe note al classificatore.

4

n_iter_ - array, forma (n_classes) o (1)

Restituisce il numero effettivo di iterazioni per tutte le classi.

Esempio di implementazione

Il seguente script Python fornisce un semplice esempio di implementazione della regressione logistica su iris set di dati di 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)

Produzione

0.96

L'output mostra che il modello di regressione logistica sopra ha fornito una precisione del 96 percento.