Ir al contenido principal

Diagrama de temas

    • Entrenamiento y ajuste de modelos de regresión logística

      Entrenamiento y ajuste de modelos de regresión logística


      Archivos de datos

      /home/student/ITSAI/Classification/Classification.ipynb
      /home/student/ITSAI/Classification/data/train.csv

      Antes de empezar


      La máquina virtual y Jupyter® Notebook no están abiertos.

      Escenario

      Se le dio un conjunto de datos sobre uno de los desastres más conocidos de la historia: el hundimiento del RMS Titanic. Haya múltiples factores que pueden haber influido en quién sobrevivió y quién no. Usted quiere poder llegar a sus propias conclusiones y verificar esas conclusiones a través de la experiencia práctica. Por lo tanto, decide crear un modelo de aprendizaje automático que le ayudará a lograr eso.

      Utilizará un conjunto de datos del mundo real que incluye varias estadísticas sobre los pasajeros del Titanic. La etiqueta en este caso es si el pasajero sobrevivió o no. Por lo tanto, entrenará varios modelos de clasificación, comenzando con el algoritmo de regresión logística, que intentará predecir quién sobrevivió y quién no. En última instancia, desea poder alimentar el modelo con sus propios datos, por ejemplo, usted y sus amigos podrían ser "pasajeros" con sus propias características (edad, sexo, número de hermanos, etc.), para que pueda determinar si usted sobreviviría o no al desastre.


      -------------------------------------------------------------------------------------------------------------------------------------------------------------


      1. Inicie el entorno de actividad.

      1. En el escritorio, haga doble clic en la aplicación Oracle VM VirtualBox para iniciarla.

      2. En Oracle VM VirtualBox Manager, en la lista de la izquierda, seleccione ITSAI y, a continuación, 2. seleccione Computador→Inicio→Inicio normal.

      3. Espere a que se inicie el sistema operativo.


      -------------------------------------------------------------------------------------------------------------------------------------------------------------
      2. Inicie Jupyter Notebook.
          1. En el escritorio, haga doble clic en el icono de Jupyter para iniciar el servidor de Jupyter Notebook y abrir un explorador web.
          2. Seleccione ITSAI.
          3. Seleccione Clasificación.
          4. Seleccione Classification.ipynb para abrirlo.

      -------------------------------------------------------------------------------------------------------------------------------------------------------------
      3. Importe las bibliotecas relevantes y cargue el conjunto de datos.
      1. Desplácese hacia abajo y vea la celda titulada Importar bibliotecas de software y cargue el conjunto de datos y examine la lista de código debajo de ella.
      Este código importa las diversas bibliotecas de software que se utilizarán en este programa.

      2. Ejecute la celda de código.

      3. Compruebe que newdata.csv y train.csv están en la carpeta del proyecto y que este último se cargó con 891 registros.

      Se proporcionan entrenamientos independientes y nuevos conjuntos de datos. El archivo train.csv es un conjunto de datos etiquetado que se va a usar para entrenar los modelos. El archivo newdata.csv es un conjunto de datos sin etiqueta que contiene datos para los que desea que el modelo tome decisiones de clasificación. Dividirá el conjunto de datos de entrenamiento para crear también un conjunto de validación. Primero, deberá familiarizarse con los datos.

      Nota: Ya se realizó algún preprocesamiento en este conjunto de datos para ingresar algunos valores que faltan, codificar valores, combinar algunas características y quitar columnas que no serán necesarias en los modelos.


      ------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      4. Familiarícese con los datos.
      1. Desplácese hacia abajo y vea la celda titulada Familiarizarse con el conjunto de datos y examine la lista de código debajo de ella.

      Este código generará los distintos tipos de datos incluidos en el conjunto de datos.
      2. Ejecute la celda de código.
      3. Examine el resultado.


      - El conjunto de entrenamiento incluye 891 filas y 10 columnas.
      - 8 columnas contienen valores enteros y 2 contienen valores flotantes.
      - Todas las columnas tienen un valor en cada fila.
      - Varias columnas no necesitan explicación, pero esta es la descripción de las que sí la necesitan:
      -Survived con un valor de 0 significa que el pasajero no sobrevivió; 1 significa sí lo hizo. Esta es la etiqueta de mayor importancia.
      -Pclass es la clase de boleto. En otras palabras, un valor de 1 significa que el pasajero viajaba en primera clase, el servicio más caro y de mayor calidad. Esto también actúa como un indicador de la situación socioeconómica del pasajero.
      -SibSp se refiere al número de hermanos más un cónyuge que el pasajero tenía a bordo.
      -Parch se refiere al número de padres e hijos que el pasajero tenía a bordo.
      -Fare es el costo del boleto del pasajero, que probablemente se correlaciona con Pclass.
      -SizeOfFamily es la combinación de SibSp y Parch para obtener el número total de pasajeros para el boleto.
      -SexEncoding es el valor numérico codificado para el género del pasajero: 1 para mujer y 2 para hombre.
      -EmbarkedEncoding es el valor numérico codificado que hace referencia al puerto desde donde se embarcó el pasajero: 1 para Southampton, 2 para Cherburgo y 3 para Queenstown.
      -TitleEncoding es el valor numérico codificado que indica si un pasajero tiene un título personal: 1 para Sr., 2 para Sra., etc.
      4. En la siguiente celda de código, examine el código.

      Este código mostrará las primeras 5 filas del conjunto de datos.

      5. Ejecute la celda de código.

      6. Examine el resultado.

      Todos los valores son numéricos. Nuevamente, estos datos fueron preparados de antemano.


      -------------------------------------------------------------------------------------------------------------------------------------------------------------
      5. Examine un resumen general de las estadísticas.
      1. Desplácese hacia abajo y vea la celda titulada Examinar un resumen general de las estadísticas y examine la lista de código debajo de ella.

      Este código generará estadísticas generales para las columnas con valores numéricos en el conjunto de datos.

      2. Ejecute la celda de código.

      3. Examine el resultado.

      La media para Survived es 0,38. Dado que las entidades de esta columna contienen un 1 (sobrevivió) o un 0 (no sobrevivió), esto significa que el 38 % de los pasajeros del conjunto de entrenamiento sobrevivieron.
      El valor Age mínimo muestra que el pasajero más joven del conjunto tenía menos de un año (0,42). El valor Age máximo era de 80 años.
      La edad media era de 29.36 años.

      ------------------------------------------------------------------------------------------------------------------------------------------------------------------------

      6. Teniendo en cuenta lo que sabe sobre el conjunto de datos hasta el momento, ¿Qué características cree que podrían influir en las tasas de supervivencia?

      ------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      7. Utilice la visualización de barras apiladas para mostrar los números de supervivencia.
      1. Desplácese hacia abajo y vea la celda titulada Usar visualización de barras apiladas para mostrar los números de supervivencia y examine la lista de código debajo de ella.

      Este código generará gráficos de barras apiladas para las columnas PclassSexEncodingSizeOfFamily y EmbarkedEncoding.

      2. Ejecute la celda de código.

      3. Examine el resultado.


      Para cada fila de gráficos, el número de pasajeros que perecieron se muestra en la barra de la izquierda y el número de pasajeros que sobrevivieron se muestra en la barra de la derecha.
      En general, los pasajeros tenían más probabilidades de perecer que de sobrevivir.
      La mayoría de las personas que perecieron estaban en tercera clase. Sin embargo, tenga en cuenta que estos gráficos miden valores absolutos y no proporciones. Puede haber habido más personas en tercera clase que en cualquier otra clase.
      La mayoría de las personas que perecieron eran hombres (2).
      La mayoría de las personas que perecieron no estaban con sus familiares.
      Las personas que se embarcaron desde Cherburgo (2) tenían más probabilidades de sobrevivir que de perecer.
      Las personas que se embarcaron desde Southampton (1) tenían más probabilidades de perecer que de sobrevivir.


      ------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      8. Busque relaciones entre supervivencia, edad y sexo.
      1. Desplácese hacia abajo y vea la celda titulada Buscar relaciones entre supervivencia, edad y sexo y examine la lista de código que aparece debajo de ella.

      Este código generará gráficos de barras apiladas por SexEncoding y Age que muestran el número de sobrevivientes para cada una.

      2. Ejecute la celda de código.

      3. Examine el resultado.

      Como era de esperar, las pasajeras tuvieron tasas de supervivencia más altas que los pasajeros masculinos. Del mismo modo, menos de los ancianos sobrevivieron en comparación con los pasajeros más jóvenes, aunque esto es más obvio para los pasajeros masculinos que para los femeninos.


      ------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      9. Divida los conjuntos de datos.
      1. Desplácese hacia abajo y vea la celda titulada Dividir los conjuntos de datos y examine la lista de código debajo de ella.

      Este código dividirá el conjunto de datos en conjuntos de entrenamiento y de validación.

      2. Ejecute la celda de código.

      3. Examine el resultado.

      El conjunto de datos de entrenamiento original se dividió en dos: un conjunto para seguir usándolo como conjunto de entrenamiento y otro para usarlo como conjunto de validación. Tenga en cuenta que la etiqueta Survived se quitó de las matrices X y se colocó en su propio vector y.


      NotaX_train/val/test y y_train/val/test es un esquema de nomenclatura convencional para las divisiones de conjuntos de datos en el aprendizaje automático. A veces, los profesionales utilizarán variables más descriptivas en su lugar.


      ------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      10. Cree un modelo de regresión logística.
      1. Desplácese hacia abajo y vea la celda titulada Crear un modelo de regresión logística y examine la lista de código que aparece debajo de ella.

      Este código creará un modelo de regresión logística y mostrará el tiempo que se tardó en generar y la puntuación del modelo.
      La línea 3 es lo que crea el modelo usando scikit-learn. En este caso, especifica tres hiperparámetros diferentes y sus valores:
      solver = 'sag'
      C = 0.05
      max_iter = 10000
      Estos hiperparámetros se eligieron arbitrariamente. Estas pueden no ser las mejores opciones posibles, como verá en breve.
      No es necesario que entienda exactamente lo que significan estos hiperparámetros. Basta con saber que cambian la forma en que el algoritmo de regresión logística aprende de los datos de entrenamiento, así como la forma en que intenta evitar el sobreajuste.

      2. Ejecute la celda de código.


      3. Examine el resultado.

      La puntuación para este modelo es de alrededor del 79 %. Tenga en cuenta que la puntuación predeterminada para un modelo de clasificación en scikit-learn es la precisión. Obtendrá más información sobre la precisión y otras métricas de clasificación en el tema siguiente. Por ahora, solo considere que una puntuación más alta es más deseable.

      4. En la siguiente celda de código, examine el código.

      Este código utilizará el modelo de regresión logística para predecir la supervivencia de los pasajeros en el conjunto de validación.

      5. Ejecute la celda de código.

      6. Examine el resultado.

      Además de las columnas existentes, la clasificación predicha por el modelo en el conjunto de validación se compara con el valor de etiqueta real. Las probabilidades de cada clasificación también se muestran en las columnas más a la derecha. Estas probabilidades son los resultados que la función de regresión logística genera y utiliza para determinar qué clase predecir. Por ejemplo, si ProbPerished es mayor que ProbSurvived, entonces el modelo habrá predicho un 0 para ese pasajero en particular (es decir, no sobrevivió).
      Nota: Quizás deba desplazarse hacia la derecha para ver todos los valores de probabilidad. Para ello, haga clic y arrastre la barra de desplazamiento en la parte inferior de la tabla.


      ------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      11. Ajuste un modelo de regresión logística.
      1. Desplácese hacia abajo y vea la celda titulada Ajustar un modelo de regresión logística y examine la lista de código que aparece debajo de ella.

      Este código básicamente realiza los mismos pasos de entrenamiento que antes. La diferencia es que, en la línea 1, se configuran diferentes hiperparámetros:
      solver es ahora 'liblinear'.
      C es ahora 0.10.
      Se agregó penalty = 'l2' como un nuevo hiperparámetro.
      max_iter sigue siendo 10000.

      2. Ejecute la celda de código.


      3. Examine el resultado.

      La puntuación de este modelo mejoró del 79 % al 83 % después del ajuste.


      4. En la siguiente celda de código, examine el código.

      Este código utilizará el modelo de regresión logística ajustado para predecir la supervivencia de los pasajeros en el conjunto de validación.

      5. Ejecute la celda de código.

      6. Examine el resultado.

      Como puede ver, las predicciones y las probabilidades de predicción para cada pasajero son algo diferentes del modelo de regresión logística no ajustado original. Por ejemplo, en la cuarta fila, el modelo ajustado predijo correctamente que el pasajero sobrevivió, mientras que el modelo original no lo hizo.