Como criar um modelo de aprendizado supervisionado com regressão logística

Depois de construir o seu primeiro modelo preditivo de classificação para a análise dos dados, a criação de mais modelos como é uma tarefa realmente simples em scikit

. A única diferença real de um modelo para a próxima é que você pode ter que ajustar os parâmetros de algoritmo para algoritmo.

Como carregar os seus dados

Esta listagem de código irá carregar o íris conjunto de dados em sua sessão:

Video: Aula Regressao Logistica

gt; gt; gt; de sklearn.datasets importar load_irisgt; gt; gt; íris = load_iris ()

Como criar uma instância do classificador

As duas linhas de código seguintes criar uma instância do classificador. A primeira linha importa a biblioteca de regressão logística. A segunda linha cria uma instância do algoritmo de regressão logística.

gt; gt; gt; de sklearn linear_modelgt importação; gt; gt; logClassifier = linear_model.LogisticRegression (C = 1, random_state = 111)

Observe o parâmetro (parâmetro de regularização) no construtor. o parâmetro de regularização é utilizado para evitar overfitting. O parâmetro não é estritamente necessário (o construtor vai funcionar bem sem ele, porque ele será o padrão para C = 1). Criando um classificador de regressão logística usando C = 150 cria uma melhor enredo da superfície da decisão. Você pode ver ambas as parcelas abaixo.

Como executar os dados de treinamento

Você precisa dividir o conjunto de dados para treinamento e teste sets antes de criar uma instância do classificador de regressão logística. O código a seguir irá realizar essa tarefa:

gt; gt; gt; de sklearn cross_validationgt importação; gt; gt; X_train, X_test, y_train, y_test = cross_validation.train_test_split (iris.data, iris.target, test_size = 0,10, random_state = 111) gt; gt; gt; logClassifier.fit (X_train, y_train)

Linha 1 importa a biblioteca que permite dividir o conjunto de dados em duas partes.

Video: Difference between Classification and Regression - Georgia Tech - Machine Learning

Linha 2 chama a função da biblioteca que divide o conjunto de dados em duas partes e atribui os conjuntos de dados agora dividido para dois pares de variáveis.

Linha 3 leva a instância do classificador de regressão logística que você acabou de criar e chama a em forma método para treinar o modelo com o conjunto de dados de treinamento.

Video: Lecture 09 - The Linear Model II

Como visualizar o classificador

Olhando para a superfície de decisão sobre a trama, parece que algum ajuste tem que ser feito. Se você olhar perto do meio da trama, você pode ver que muitos dos pontos de dados pertencentes à área central (Versicolor) estão mentindo na área para o lado direito (Virginica).



Uma superfície de decisão feita usando uma regressão logística C = 1.

Esta imagem mostra a superfície decisão com um valor C de 150. visualmente parece melhor, por isso a escolha de usar essa configuração para o seu modelo de regressão logística parece apropriado.

Uma superfície de decisão com um valor de 150 c.

Como executar os dados de teste

No código a seguir, a primeira linha alimenta o conjunto de dados de teste para o modelo e a terceira linha exibe a saída:

gt; gt; gt; previu = logClassifier.predict (X_test) gt; gt; gt; predictedarray ([0, 0, 2, 2, 1, 0, 0, 2, 2, 1, 2, 0, 2, 2, 2])

Como avaliar o modelo

Pode referência cruzada a saída a partir da previsão contra a y_test matriz. Como resultado, você pode ver que ele previu todos os pontos de dados de teste corretamente. Aqui está o código:

gt; gt; gt; de sklearn metricsgt importação; gt; gt; predictedarray ([0, 0, 2, 2, 1, 0, 0, 2, 2, 1, 2, 0, 2, 2, 2]) gt; gt; gt; y_testarray ([0, 0, 2, 2, 1, 0, 0, 2, 2, 1, 2, 0, 2, 2, 2]) gt; gt; gt; metrics.accuracy_score (y_test, previu) 1.0 # 1.0 é de 100 por cento accuracygt; gt; gt; previu == y_testarray ([verdadeiro,,, verdadeiras, verdadeiro,,, verdadeiras, True, verdadeiro,,, verdadeiras, verdadeiro,], dtipo = boleano)

Assim como o modelo de regressão logística com o parâmetro C = 150 comparar a isso? Bem, você não pode bater 100 por cento. Aqui está o código para criar e avaliar o classificador logística com C = 150:

Video: Comparing Classification and Regression - Intro to Machine Learning

gt; gt; gt; logClassifier_2 = linear_model.LogisticRegression (C = 150, random_state = 111) gt; gt; gt; logClassifier_2.fit (X_train, y_train) gt; gt; gt; previu = logClassifier_2.predict (X_test) gt; gt; gt; metrics.accuracy_score (y_test, previu) 0.93333333333333335gt; gt; gt; metrics.confusion_matrix (y_test, previu) matriz ([[5, 0, 0], [0, 2, 0], [0, 1, 7]])

Se esperava melhor, mas foi realmente pior. Houve um erro nas previsões. O resultado é a mesma que a do modelo Support Vector Machine (SVM).

Aqui está a lista completa do código para criar e avaliar um modelo de classificação de regressão logística com os parâmetros padrão:

gt; gt; gt; de sklearn.datasets importar load_irisgt; gt; gt; de sklearn linear_modelgt importação; gt; gt; de sklearn cross_validationgt importação; gt; gt; de sklearn metricsgt importação; gt; gt; íris = load_iris () gt; gt; gt; X_train, X_test, y_train, y_test = cross_validation.train_test_split (iris.data, iris.target, test_size = 0,10, random_state = 111) gt; gt; gt; logClassifier = linear_model.LogisticRegression (, random_state = 111) gt; gt; gt; logClassifier.fit (X_train, y_train) gt; gt; gt; previu = logClassifier.predict (X_test) gt; gt; gt; predictedarray ([0, 0, 2, 2, 1, 0, 0, 2, 2, 1, 2, 0, 2, 2, 2]) gt; gt; gt; y_testarray ([0, 0, 2, 2, 1, 0, 0, 2, 2, 1, 2, 0, 2, 2, 2]) gt; gt; gt; metrics.accuracy_score (y_test, previu) 1.0 # 1.0 é de 100 por cento accuracygt; gt; gt; previu == y_testarray ([verdadeiro,,, verdadeiras, verdadeiro,,, verdadeiras, True, verdadeiro,,, verdadeiras, verdadeiro,], dtipo = boleano)

Publicações relacionadas