Scikit Learn - Regressão Logística

A regressão logística, apesar do nome, é um algoritmo de classificação e não um algoritmo de regressão. Com base em um determinado conjunto de variáveis ​​independentes, é usado para estimar o valor discreto (0 ou 1, sim / não, verdadeiro / falso). Também é chamado de logit ou Classificador MaxEnt.

Basicamente, ele mede a relação entre a variável dependente categórica e uma ou mais variáveis ​​independentes, estimando a probabilidade de ocorrência de um evento usando sua função logística.

sklearn.linear_model.LogisticRegression é o módulo usado para implementar a regressão logística.

Parâmetros

A tabela a seguir lista os parâmetros usados ​​por Logistic Regression módulo -

Sr. Não Parâmetro e Descrição
1

penalty - str, 'L1', 'L2', 'elasticnet' ou nenhum, opcional, padrão = 'L2'

Este parâmetro é usado para especificar a norma (L1 ou L2) usada na penalização (regularização).

2

dual - Booleano, opcional, padrão = False

É usado para formulação dupla ou primária, enquanto a formulação dupla só é implementada para penalidade de L2.

3

tol - flutuante, opcional, padrão = 1e-4

Ele representa a tolerância para os critérios de parada.

4

C - flutuante, opcional, padrão = 1,0

Ele representa o inverso da força de regularização, que deve ser sempre um float positivo.

5

fit_intercept - Booleano, opcional, padrão = Verdadeiro

Este parâmetro especifica que uma constante (polarização ou interceptação) deve ser adicionada à função de decisão.

6

intercept_scaling - flutuante, opcional, padrão = 1

Este parâmetro é útil quando

  • a solver ‘liblinear’ é usado

  • fit_intercept está definido como verdadeiro

7

class_weight - dict ou 'balanceado' opcional, padrão = nenhum

Ele representa os pesos associados às classes. Se usarmos a opção padrão, significa que todas as classes devem ter peso um. Por outro lado, se você escolher class_weight: balance, ele usará os valores de y para ajustar automaticamente os pesos.

8

random_state - int, instância RandomState ou Nenhum, opcional, padrão = nenhum

Este parâmetro representa a semente do número pseudoaleatório gerado que é usado ao embaralhar os dados. A seguir estão as opções

  • int - neste caso, random_state é a semente usada pelo gerador de números aleatórios.

  • RandomState instance- neste caso, random_state é o gerador de números aleatórios.

  • None - neste caso, o gerador de número aleatório é a instância RandonState usada por np.random.

9

solver - str, {'newton-cg', 'lbfgs', 'liblinear', 'saag', 'saga'}, opcional, padrão = 'liblinear'

Este parâmetro representa qual algoritmo usar no problema de otimização. A seguir estão as propriedades das opções sob este parâmetro -

  • liblinear- É uma boa escolha para pequenos conjuntos de dados. Ele também lida com a penalidade L1. Para problemas multiclasse, é limitado a esquemas de um versus descanso.

  • newton-cg - Ele lida apenas com a penalidade L2.

  • lbfgs- Para problemas multiclasse, ele lida com perda multinomial. Ele também lida apenas com a penalidade L2.

  • saga- É uma boa escolha para grandes conjuntos de dados. Para problemas multiclasse, ele também lida com a perda multinomial. Junto com a penalidade L1, também suporta a penalidade 'elasticnet'.

  • sag- Também é usado para grandes conjuntos de dados. Para problemas multiclasse, ele também lida com a perda multinomial.

10

max_iter - int, opcional, padrão = 100

Como o nome sugere, ele representa o número máximo de iterações tomadas para os solucionadores convergirem.

11

multi_class - str, {'ovr', 'multinomial', 'auto'}, opcional, padrão = 'ovr'

  • ovr - Para esta opção, um problema binário é adequado para cada etiqueta.

  • multimonial- Para esta opção, a perda minimizada é o ajuste de perda multinomial em toda a distribuição de probabilidade. Não podemos usar esta opção se solver = 'liblinear'.

  • auto - Esta opção selecionará 'ovr' se solver = 'liblinear' ou os dados forem binários, caso contrário, escolherá 'multinomial'.

12

verbose - int, opcional, padrão = 0

Por padrão, o valor desse parâmetro é 0, mas para o solucionador liblinear e lbfgs, devemos definir verbose para qualquer número positivo.

13

warm_start - bool, opcional, padrão = falso

Com este parâmetro definido como True, podemos reutilizar a solução da chamada anterior para caber como inicialização. Se escolhermos o padrão, ou seja, falso, ele apagará a solução anterior.

14

n_jobs - int ou nenhum, opcional, padrão = nenhum

Se multi_class = 'ovr', este parâmetro representa o número de núcleos de CPU usados ​​ao paralelizar sobre classes. Ele é ignorado quando solver = 'liblinear'.

15

l1_ratio - float ou Nenhum, opcional, dgtefault = Nenhum

É usado no caso em que penalidade = 'elasticnet'. É basicamente o parâmetro de mistura Elastic-Net com 0 <= l1_ratio> = 1.

Atributos

A tabela a seguir consiste nos atributos usados ​​por Logistic Regression módulo -

Sr. Não Atributos e descrição
1

coef_ - matriz, forma (n_features,) ou (n_classes, n_features)

É usado para estimar os coeficientes das características na função de decisão. Quando o problema fornecido é binário, ele tem a forma (1, n_features).

2

Intercept_ - matriz, forma (1) ou (n_classes)

Representa a constante, também conhecida como viés, adicionada à função de decisão.

3

classes_ - matriz, forma (n_classes)

Ele fornecerá uma lista de rótulos de classe conhecidos pelo classificador.

4

n_iter_ - matriz, forma (n_classes) ou (1)

Ele retorna o número real de iterações para todas as classes.

Exemplo de Implementação

Seguir o script Python fornece um exemplo simples de implementação de regressão logística em iris conjunto de dados do 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)

Resultado

0.96

A saída mostra que o modelo de regressão logística acima forneceu a precisão de 96 por cento.