Aprendizado de máquina com Python: Regressão logística

Conteúdo

O que é regressão logística?

Este artículo asume que posee conocimientos básicos y comprensión de los conceptos de aprendizaje automático, como el vector de destino, la matriz de características y términos relacionados.

Regressão logística: probablemente uno de los algoritmos de aprendizaje automático supervisado más interesantes en el aprendizaje automático. A pesar de tener “Regressão” en su nombre, Regresión logística es un método supervisado de uso popular. Classificação Algoritmo. Regressão logística, junto con sus primos relacionados a saber. Regresión logística multinomial, nos otorga la capacidad de predecir si una observación pertenece a una determinada clase utilizando un enfoque que es sencillo, fácil de entender y sigue.

linear_vs_logistic_regression-4233830

Fonte: DZone

Regresión logística en su forma base (por defecto) é um Clasificador binario. Isto significa que o vetor alvo só pode assumir um de dois valores. Na fórmula do algoritmo de regressão logística, temos um modelo linear, por exemplo, b0 + b1x, que está integrado numa função logística (também conhecida como função sigmoide). A fórmula do Classificador Binário que temos no final é a seguinte:

Onde:

  • P (eeu = 1 | X) é a probabilidade de iº Observações valor alvo, eeu pertencente à classe 1.
  • Β0 y β1 são os parametros que devem ser aprendidos.
  • mim representa o número de Euler.

Objetivo principal da fórmula de regressão logística.

A fórmula de regressão logística tem como objetivo limitar ou restringir a saída linear e / ou sigmoide entre um valor de 0 e 1. A razão principal é para fins de interpretação, quer dizer, podemos ler o valor como uma probabilidade simples; O que significa que se o valor for maior que 0,5, seria prevista a classe um; pelo contrário, será prevista a classe 0.

Objetivo principal

Fonte: GraphPad

Implementação Python.

Agora veremos a implementação na linguagem de programação Python. Para este exercício, usaremos o conjunto de dados da ionosfera que está disponível para download a partir do Repositório de aprendizado de máquina UCI.

# Começamos importando os pacotes necessários
# to be used for the Machine Learning problem

import pandas as pd
import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import StandardScaler

# Lemos os dados para o nosso sistema usando o método do Pandas
# 'read_csv'. Isto transforma o ficheiro .csv
# num objeto Pandas DataFrame.

dataframe = pd.read_csv('ionosphere.data', header = None)

# Configuramos as definições de exibição do
# Pandas DataFrame.

pd.set_option('display.max_rows', 10000000000)
pd.set_option('display.max_columns', 10000000000)
pd.set_option('display.width', 95)

# Visualizamos a forma do dataframe. Especificamente
# o número de linhas e colunas presentes.
imprimir('Este DataFrame Tem %d Linhas e %d Colunas'%(dataframe.shape))

A saída do código anterior seria a seguinte (a forma do quadro de dados):

código 4

# Imprimimos as cinco primeiras linhas do nosso dataframe.
imprimir(dataframe.head())

A saída do código anterior será a seguinte (a seguinte saída está truncada):

truncar

# Isolamos a matriz de características do DataFrame.
features_matrix = dataframe.iloc[:, 0:34]

# Isolamos o vetor alvo do DataFrame.
target_vector = dataframe.iloc[:, -1]

# Verificamos a forma da matriz de características, e do vetor alvo.
imprimir('A Matriz de Características Tem %d Linhas e %d Colunas'(s)%(features_matrix.shape))
imprimir('A Matriz Alvo Tem %d Linhas e %d Colunas'(s)%(np.array(target_vector).remodelar(-1, 1).forma))

A saída para a forma da nossa matriz de características e o vetor objetivo seria a seguinte:

Regressão logística de matriz de características e vetor objetivo

# Usamos o StandardScaler do scikit-learn para
# pré-processar os dados da matriz de características. Isto irá
# garantir que todos os valores introduzidos estejam na mesma
# escala para o algoritmo.

features_matrix_standardized = StandardScaler().fit_transform(features_matrix)
12 modelo de regressão logística prevista
# Criamos uma instância do Algoritmo LogisticRegression
# Utilizamos os valores padrão para os parâmetros e
# hiperparâmetros.

algorithm = LogisticRegression(penalty='l2', dual=False, tol=1e-4,
C=1,0, fit_intercept=True,
intercept_scaling=1, class_weight=Nenhum,
random_state = None, solver="lbfgs",
max_iter=100, multi_class="auto",
verbose = 0, warm_start=False, n_jobs=None,
l1_ratio=None)

# Utilizamos o método 'fit' para realizar o
# processo de treino na matriz das nossas características e vetor-alvo.

Logistic_Regression_Model = algoritmo.ajuste(features_matrix_standardized, target_vector)
# Criamos uma observação com valores, em ordem
# para testar o poder preditivo do nosso modelo.

observação = [[1, 0, 0.99539, -0.05889, 0.8524299999999999, 0.02306,
0.8339799999999999, -0.37708, 1.0, 0.0376,
0.8524299999999999, -0.17755, 0.59755, -0.44945, 0.60536,
-0.38223, 0.8435600000000001, -0.38542, 0.58212, -0.32192,
0.56971, -0.29674, 0.36946, -0.47357, 0.56811, -0.51171,
0.41078000000000003, -0.46168000000000003, 0.21266, -0.3409,
0.42267, -0.54487, 0.18641, -0.453]]
# Armazenamos o valor da classe prevista numa variável
# chamada 'previsões'.

previsões = Logistic_Regression_Model.prever(observação)
# Imprimimos a classe prevista do modelo para a observação.
imprimir('O Modelo Previu que a Observação Pertencesse À Classe %s'%(previsões))

La salida al bloque de código anterior deve ser la siguiente:

14 Regressão logística

# Visualizamos as classes específicas para as quais o modelo foi treinado para prever.

imprimir(O Algoritmo Foi Treinado Para Prever Uma Das Duas Classes: %S'%(algorithm.classes_))

La salida al bloque de código anterior se verá de la siguiente manera:

problema modelo 2 Regressão logística

imprimir("""O modelo diz a probabilidade da observação que passámos pertencer à classe ['b'] Is %s"""%(algorithm.predict_proba(observação)[0][0]))
imprimir()
imprimir("""O modelo diz a probabilidade da observação que passámos pertencer à classe ['g'] Is %s"""%(algorithm.predict_proba(observação)[0][1]))

El resultado esperado sería el siguiente:

Probabilidad del modelo de regresión logística

conclusão.

Con esto concluye mi article. Agora entendemos a lógica por detrás deste algoritmo de aprendizagem automática supervisionado e sabemos como implementarlo en um problema de classificação binaria.

Obrigado pelo seu tempo.

A mídia mostrada neste artigo não é propriedade da DataPeaker e é usada a critério do autor.

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.

Datapeaker