Como criar um modelo de aprendizagem supervisionadas 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 ele é uma tarefa realmente simples em scikit

. A única diferença real de um modelo para o próximo é 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:

>>> From sklearn.datasets importar load_iris >>> iris = load_iris ()

Como criar uma instância do classificador

As duas linhas de código a seguir cria 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.

>>> From sklearn linear_model importação >>> 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 superajuste. O parâmetro não é estritamente necessário (o construtor irá 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 lote de superfície a decisão. Você pode ver ambas as parcelas abaixo.

Como executar os dados de treinamento

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

>>> From sklearn cross_validation importação >>> X_train, X_test, y_train, y_test = cross_validation.train_test_split (iris.data, iris.target, test_size = 0,10, random_state = 111) >>> logClassifier.fit (X_train, y_train)
Linha 1 importa a biblioteca que permite dividir o conjunto de dados em duas partes.
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 caber método para treinar o modelo com o conjunto de dados de treinamento.

Como visualizar o classificador

Olhando para a superfície de decisão sobre a trama, parece que algum ajuste tem de 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 encontrando-se na área para o lado direito (Virginica).

image0.jpg

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

image1.jpg

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:

>>> Previu = logClassifier.predict (X_test) >>> predictedarray ([0, 0, 2, 2, 1, 0, 0, 2, 2, 1, 2, 0, 2, 2, 2])

Como avaliar o modelo

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

>>> A partir de métricas de importação sklearn >>> predictedarray ([0, 0, 2, 2, 1, 0, 0, 2, 2, 1, 2, 0, 2, 2, 2]) >>> y_testarray ([ 0, 0, 2, 2, 1, 0, 0, 2, 2, 1, 2, 0, 2, 2, 2]) >>> metrics.accuracy_score (y_test, previu) 1.0 # 1.0 é 100 por cento de precisão> >> previu == y_testarray ([verdade, verdade, verdade, verdade, verdade, verdade, verdade, verdade, verdade, verdade, verdade, verdade, verdade, verdade, verdade], dtipo = bool)

Assim como o modelo de regressão logística com o parâmetro C = 150 comparar com 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:

>>> LogClassifier_2 = linear_model.LogisticRegression (C = 150, random_state = 111) >>> logClassifier_2.fit (X_train, y_train) >>> previu = logClassifier_2.predict (X_test) >>> metrics.accuracy_score (y_test, previsto) ,93333333333333335 >>> 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 é o mesmo que o do modelo de 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:

>>> From sklearn.datasets importar load_iris >>> from sklearn linear_model importação >>> from sklearn cross_validation importação >>> from métricas de importação sklearn >>> iris = load_iris () >>> X_train, X_test, y_train, y_test = cross_validation .train_test_split (iris.data, iris.target, test_size = 0,10, random_state = 111) = >>> logClassifier linear_model.LogisticRegression (, random_state = 111) >>> logClassifier.fit (X_train, y_train) previu >>> = logClassifier .predict (X_test) >>> predictedarray ([0, 0, 2, 2, 1, 0, 0, 2, 2, 1, 2, 0, 2, 2, 2]) >>> y_testarray ([0, 0, 2, 2, 1, 0, 0, 2, 2, 1, 2, 0, 2, 2, 2]) >>> metrics.accuracy_score (y_test, previu) 1.0 # 1.0 é 100 por cento de precisão >>> previu == y_testarray ([verdade, verdade, verdade, verdade, verdade, verdade, verdade, verdade, verdade, verdade, verdade, verdade, verdade, verdade, verdade], dtipo = bool)

menu