Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Taller 03
Minería de Datos
Celeste Auquilla
Exercise - Train and evaluate a classification model
Empezamos importando pandas y descargando el documento con los datos para poder utilizado.
Estos datos contienen información de personas que tienen diabetes. La última columna del
conjunto de datos (Diabético) contiene el valor 0 para los pacientes que dieron negativo en la
prueba de diabetes y 1 para los pacientes que dieron positivo. Esta etiqueta que entrenaremos
para que prediga nuestro modelo; la mayoría de las otras columnas (Embarazos, PlasmaGlucosa,
Presión arterial diastólica, etc.) son las características que usaremos para predecir la etiqueta
Diabético.
Como se puede observar tenemos mas casos de entrenamiento que de prueba para que nuestro
modelo esté listo.
Entrenar y evaluar un modelo de clasificación binaria
Bien, ahora estamos listos para entrenar nuestro modelo ajustando las funciones de
entrenamiento (X_train) a las etiquetas de entrenamiento (y_train). Vamos a usar regresión
logística. Además, vamos a necesitar establecer un parámetro de regularización. Esto se usa para
contrarrestar cualquier sesgo en la muestra y ayudar a que el modelo se generalice bien evitando
sobreajustar el modelo a los datos de entrenamiento.
Vamos a evaluar que tan bien predice con scikit-learn . Comencemos usando el modelo para
predecir etiquetas para nuestro conjunto de prueba y comparemos las etiquetas pronosticadas con
las etiquetas conocidas:
Las matrices de etiquetas son demasiado largas para mostrarse en la salida del cuaderno, por lo
que solo podemos comparar algunos valores. Con scikit-learn proporciona algunas métricas que
podemos usar para evaluar el modelo.
La precisión se devuelve como un valor decimal: un valor de 1,0 significaría que el modelo acertó
en el 100 % de las predicciones; mientras que una precisión de 0.0 es, bueno.
Las
Parece que faltan algunos valores de características, pero no faltan etiquetas. Profundicemos un
poco más y veamos las filas que contienen valores nulos.
Hay dos filas que no contienen ningún valor de función (NaN significa "no es un número"), por lo
que no serán útiles para entrenar un modelo. Vamos a descartarlos del conjunto de datos.
Ahora que nos hemos ocupado de los valores que faltan, exploremos cómo se relacionan las
características con la etiqueta creando algunos gráficos de caja.
A partir de los diagramas de caja, parece que las especies 0 y 2 (Adelie y Chinstrap) tienen perfiles
de datos similares para la profundidad del culmen, la longitud de las aletas y la masa corporal, pero
los Chinstrap tienden a tener culmen más largos. La especie 1 (Gentoo) tiende a tener
características claramente diferenciadas de las demás; lo que debería ayudarnos a entrenar un
buen modelo de clasificación.
Preparar los datos
Al igual que para la clasificación binaria, antes de entrenar el modelo, debemos separar las
características y la etiqueta, y luego dividir los datos en subconjuntos para el entrenamiento y la
validación. También aplicaremos una técnica de estratificación al dividir los datos para mantener la
proporción de cada valor de etiqueta en los conjuntos de datos de entrenamiento y validación.
Entrenar y evaluar un clasificador multiclase
Vamos a ajustar un algoritmo de clasificación multiclase a los datos para crear un modelo. La
mayoría de los algoritmos de clasificación de scikit-learn admiten de forma inherente la
clasificación multiclase. Probaremos un algoritmo de regresión logística.
Ahora podemos usar el modelo entrenado para predecir las etiquetas de las características de
prueba y comparar las etiquetas predichas con las etiquetas reales:
Aquí un reporte de clasificación.
Al igual que con la clasificación binaria, el informe incluye métricas de precisión y recuperación
para cada clase. Sin embargo, mientras que con la clasificación binaria podríamos centrarnos en las
puntuaciones de la clase positiva; en este caso, hay varias clases, por lo que debemos observar una
métrica general (ya sea la macro o el promedio ponderado) para tener una idea de qué tan bien se
desempeña el modelo en las tres clases.
Puede obtener las métricas generales por separado del informe utilizando las clases de puntaje de
métricas de scikit-learn, pero con los resultados de varias clases debe especificar qué métrica
promedio desea usar para precisión y recuperación.
La matriz de confusión muestra la intersección de los valores de etiqueta predichos y reales para
cada clase; en términos simples, las intersecciones diagonales de arriba a la izquierda a abajo a la
derecha indican el número de predicciones correctas.
Cuando se trata de varias clases, generalmente es más intuitivo visualizar esto como un mapa de
calor, como este:
Los cuadrados más oscuros en el gráfico de la matriz de confusión indican una gran cantidad de
casos y, con suerte, puede ver una línea diagonal de cuadrados más oscuros que indican los casos
en los que la etiqueta predicha y la real son las mismas.
En el caso de un modelo de clasificación multiclase, no es posible una sola curva ROC que muestre
la tasa de verdaderos positivos frente a la tasa de falsos positivos. Sin embargo, puede usar las
tarifas para cada clase en una comparación de Uno vs Resto (OVR) para crear un gráfico ROC para
cada clase.
Para cuantificar el rendimiento de ROC, puede calcular un área agregada bajo la puntuación de la
curva que se promedia en todas las curvas OVR.
Preprocesar datos en una canalización
Nuevamente, al igual que con la clasificación binaria, puede usar una canalización para aplicar
pasos de preprocesamiento a los datos antes de ajustarlos a un algoritmo para entrenar un
modelo. Veamos si podemos mejorar el predictor pingüino escalando las características numéricas
en pasos de transformación antes del entrenamiento.
Ahora guardemos nuestro modelo entrenado para que podamos usarlo nuevamente más tarde.
Bien, ahora tenemos un modelo entrenado. Usémoslo para predecir la clase de una nueva
observación de pingüinos:
También puede enviar un lote de observaciones de pingüinos al modelo y obtener una predicción
para cada una.
Verificación de conocimiento