¿Cómo crear un modelo de aprendizaje supervisado con regresión logística

Después de construir su primer modelo predictivo de clasificación para el análisis de los datos, la creación de más modelos como que es una tarea muy sencilla en scikit. La única diferencia real de un modelo a otro es que puede que tenga que ajustar los parámetros del algoritmo a otro.

La forma de cargar sus datos

Este listado de código cargará el iris conjunto de datos en la sesión:

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

Cómo crear una instancia del clasificador

Los siguientes dos líneas de código crea una instancia del clasificador. La primera línea importa la biblioteca de regresión logística. La segunda línea crea una instancia del algoritmo de regresión logística.

gt; gt; gt; de sklearn linear_modelgt importación; gt; gt; logClassifier = linear_model.LogisticRegression (C = 1, random_state = 111)

Observe el parámetro (parámetro de regularización) en el constructor. los parámetro de regularización se utiliza para evitar el sobreajuste. El parámetro no es estrictamente necesario (el constructor funcionará bien sin él, ya que será por defecto C = 1). La creación de un clasificador de regresión logística utilizando C = 150 crea una mejor trama de la superficie de decisión. Se puede ver ambas parcelas abajo.

Video: Regresion y correlacion con Statgraphics.© UPV

Cómo ejecutar los datos de entrenamiento

Tendrá que dividir el conjunto de datos en conjuntos de entrenamiento y prueba antes de poder crear una instancia del clasificador de regresión logística. El siguiente código realizar esa tarea:

gt; gt; gt; de sklearn cross_validationgt importación; 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)

Línea 1 importa la biblioteca que le permite dividir el conjunto de datos en dos partes.

Línea 2 llama a la función de la biblioteca que se divide el conjunto de datos en dos partes y asigna los conjuntos de datos ahora divididas en dos pares de variables.

Línea 3 toma el ejemplo del clasificador de regresión logística que acaba de crear y llama al ajuste Método para entrenar el modelo con la formación de datos.

Cómo visualizar el clasificador

En cuanto a la superficie decisión sobre la trama, parece que algunos ajustes que hay que hacer. Si nos fijamos cerca de la mitad de la trama, se puede ver que muchos de los puntos de datos que pertenecen a la zona media (versicolor) están mintiendo en la zona para el lado derecho (Virginica).

Una superficie de decisión hecha usando una regresión logística C = 1.

Esta imagen muestra la superficie de decisión con un valor de C 150. Se ve mejor visualmente, por lo que la elección de utilizar este ajuste para el modelo de regresión logística parece apropiado.

Una superficie de decisión con un valor c de 150.

Cómo ejecutar los datos de prueba

En el siguiente código, la primera línea alimenta el conjunto de datos de prueba para el modelo y la tercera línea muestra la salida:

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

¿Cómo evaluar el modelo

Puede PÁgINA la salida de la predicción en contra de la y_test formación. Como resultado, se puede ver que predijo todos los puntos de datos de prueba correctamente. Aquí está el código:

Video: Alberto Morillo - Regresión Logística y Redes Neurales

gt; gt; gt; de sklearn metricsgt importación; 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, predicho) 1.0 # 1.0 es 100 por ciento accuracygt; gt; gt; predicho == y_testarray ([Verdadero, True, True, True, True, True, True, True, True, True, True, True, True, True, True], dtype = bool)

Entonces, ¿cómo el modelo de regresión logística con el parámetro C = 150 comparar a eso? Bueno, no se puede superar el 100 por ciento. Aquí está el código para crear y evaluar el clasificador logística con C = 150:

Video: Estrategia de validación de modelos

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; predicho = logClassifier_2.predict (X_test) gt; gt; gt; metrics.accuracy_score (y_test, predicho) 0.93333333333333335gt; gt; gt; metrics.confusion_matrix (y_test, predicho) array ([[5, 0, 0], [0, 2, 0], [0, 1, 7]])

Nos esperábamos algo mejor, pero en realidad fue peor. Hubo un error en las predicciones. El resultado es el mismo que el de la modelo de apoyo Vector Machine (SVM).

Aquí está la lista completa del código para crear y evaluar un modelo de clasificación de regresión logística con los parámetros por defecto:

gt; gt; gt; de sklearn.datasets importar load_irisgt; gt; gt; de sklearn linear_modelgt importación; gt; gt; de sklearn cross_validationgt importación; gt; gt; de sklearn metricsgt importación; gt; gt; iris = 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; predicho = 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, predicho) 1.0 # 1.0 es 100 por ciento accuracygt; gt; gt; predicho == y_testarray ([Verdadero, True, True, True, True, True, True, True, True, True, True, True, True, True, True], dtype = bool)
Artículos Relacionados