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
Conteúdo
- Como carregar os seus dados
- Video: aula regressao logistica
- Como criar uma instância do classificador
- Como executar os dados de treinamento
- Video: difference between classification and regression - georgia tech - machine learning
- Video: lecture 09 - the linear model ii
- Como visualizar o classificador
- Como executar os dados de teste
- Como avaliar o modelo
- Video: comparing classification and regression - intro to machine learning
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).
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.
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)