Crea y prueba tu primer modelo de machine learning con Python y scikit-learn

Este tutorial forma parte de la ruta de aprendizaje de Machine learning para desarrolladores.

Nivel Tema Tipo
100 Introducción a machine learning Artículo
101 Crea y prueba tu primer modelo de machine learning con Python y scikit-learn Tutorial+Notebook
201 Aprende algoritmos de regresión usando Python y scikit-learn Tutorial+Notebook
202 Aprende algoritmos de clasificación usando Python y scikit-learn Tutorial+Notebook
203 Aprende algoritmos de clustering usando Python y scikit-learn Tutorial+Notebook

Introducción

En este tutorial, adquiere experiencia práctica sobre cómo crear y ejecutar un modelo de clasificación de principio a fin. El tutorial cubre los siguientes pasos:

  • Exploración de datos
  • Preprocesamiento de datos
  • División de datos para entrenamiento y pruebas
  • Preparación de un modelo de clasificación
  • Recopilación de todos los pasos usando pipeline
  • Entrenamiento del modelo
  • Ejecución de predicciones en el modelo
  • Evaluación y visualización del rendimiento del modelo.

Preparar

Este tutorial incluye un Jupyter Notebook escrito en Python. Es posible ejecutar el Notebook en IBM Cloud utilizando Watson Studio con una cuenta de prueba gratuita.

  1. Regístrate o inicia sesión.

  2. Crea un proyecto vacío.

    • Haz clic en Crear un proyecto o Nuevo proyecto.
    • Selecciona Crear un proyecto vacío.
    • Ponle un nombre al proyecto.
    • Elige una instancia de servicio de Object Storage existente o crea una nueva.
    • Haz clic en Crear.
  3. Agrega el Notebook.

    • Haz clic en +Agregar al proyecto.
    • Haz clic en Notebook.
    • Haz clic en Desde URL.
    • Proporciona un Nombre.
    • En Selecciona runtime, elige Python 3.6 gratuito predeterminado.
    • Ingresa https://raw.githubusercontent.com/IBM/ml-learning-path-assets/master/notebooks/classification_start_to_end_with_scikit_learn.ipynb como la URL del Notebook.
    • Haz clic en Crear Notebook.
  4. Ejecuta el Notebook.

    En el Notebook abierto, haz clic en Ejecutar para ejecutar las celdas una por una. El resto del tutorial sigue el orden del Notebook.

Ahora que has configurado tu Notebook, continuemos con el desarrollo del modelo de clasificación, utilizando un conjunto de datos que contiene información sobre los clientes de una plataforma comercial online para predecir si el cliente va a cancelar.

Exploración de datos

Hay algunos pasos que debes seguir antes de que comience el machine learning en sí. Para empezar, un científico de datos debe analizar la calidad de los datos que se utilizarán para ejecutar previsiones. La representación sesgada de los datos da como resultado un modelo sesgado. Hay varias formas de analizar los datos. En este tutorial, hacemos una exploración mínima de datos, lo suficiente para dar una idea de lo que se hace. Luego pasamos al punto central de este tema.

Sobre el conjunto de datos

En este tutorial, usamos un conjunto de datos que contiene información sobre los clientes de una plataforma comercial online para clasificar si la probabilidad de cancelación de un cliente determinado será alta, media o baja. Esto proporciona un buen ejemplo para aprender cómo se desarrolla un modelo de clasificación de principio a fin. Las tres clases en las que se incluirá la previsión son alta, media y baja. Ahora, miremos más de cerca el conjunto de datos.

Los datos están disponibles para nosotros en forma de archivo .csv y se importan usando la biblioteca de pandas. Usamos numpy y matplotlib para obtener algunas estadísticas y visualizar datos.

Cargar datos

Primero ejecutamos algunas líneas de código para comprender a qué tipo de datos corresponde cada columna y también el número de entradas en cada una de estas columnas.

Tipo de datos

La discrepancia de recuento en la columna de género (ver la siguiente imagen) se maneja en el momento del preprocesamiento de datos.

Recuento de datos

Hemos trazado un gráfico de barras básico utilizando matplotlib para comprender cómo se dividen los datos entre las diferentes clases de salida. Si no estamos satisfechos con los datos representativos, ahora es el momento de obtener más datos para utilizarlos en el entrenamiento y pruebas.

Gráfico de cancelación

Visualizar datos

Preprocesamiento de datos

El preprocesamiento de datos es un paso importante en el proceso de desarrollo de modelos de machine learning porque el modelo puede funcionar bien solo cuando los datos con los que se entrena son buenos y están bien preparados. Por lo tanto, al desarrollar modelos, este paso consume una gran cantidad de tiempo.

Hay varios pasos comunes de preprocesamiento de datos que se realizan en machine learning, y en este tutorial, analizamos algunos de ellos. Se puede encontrar una lista completa de las opciones de preprocesamiento proporcionadas por scikit-learn en la página preprocesamiento de datos de scikit-learn.

Comenzamos identificando columnas que no agregarán ningún valor para predecir los resultados. Si bien algunas de estas columnas se identifican fácilmente, generalmente se contrata a un especialista en el tema para identificar la mayoría de ellas. La eliminación de tales columnas ayuda a reducir la dimensionalidad del modelo.

Reducción de columnas

Las técnicas de preprocesamiento que se apliquen deben personalizarse para cada una de las columnas. Sklearn proporciona una biblioteca llamada ColumnTransformer, que permite aplicar una secuencia de estas técnicas a columnas selectivas mediante un pipeline.

Un problema común al tratar con conjuntos de datos es que faltan valores, scikit-learn proporciona un método para completar estos valores vacíos con algo que sería aplicable en su contexto. Usamos la clase SimpleImputer proporcionada por Sklearn y completamos los valores faltantes con el valor más frecuente en la columna.

Además, debido a que los algoritmos de machine learning funcionan mejor con números que con cadenas, queremos identificar columnas que tienen categorías y convertirlas en números. Usamos la clase OneHotEncoder proporcionada por Sklearn. La idea de un codificador activo es crear variables binarias que representen una categoría cada una. Al hacer esto, eliminamos cualquier relación ordinal que pueda ocurrir simplemente asignando números a categorías. Básicamente, pasamos de una sola columna que contiene varios números de clase a varias columnas que contienen solo números de clase binarios.

Columnas categóricas

Se identifican las columnas numéricas del conjunto de datos y se aplica StandardScalera cada una de las columnas. De esta forma, cada valor se resta con la media de su columna y se divide por su desviación estándar.

Columnas numéricas

Como se discutió anteriormente, cada una de las técnicas está agrupada por las columnas en las que necesitaban ser aplicadas y se ponen en fila usando el ColumnTransformer. Idealmente, esto se ejecuta en el pipeline justo antes de que se entrene el modelo. Sin embargo, para comprender cómo se verán los datos, los hemos transformado en una variable temporal.

Transformador de columna

Los algoritmos de machine learning no pueden utilizar texto simple. Debemos convertir los datos de texto a números. Por lo tanto, para cada cadena que es una clase, asignamos una etiqueta que es un número. Por ejemplo, en el conjunto de datos de rotación de clientes, la etiqueta de salida CHURNRISK se clasifica como alta, media o baja y se le asignan las etiquetas 0, 1 o 2. Usamos la clase LabelEncoder proporcionada por Sklearn para esto.

LabelTransformer

Estos son algunos de los pasos de preprocesamiento más populares que se aplican a los conjuntos de datos. Es posible obtener más información en Preprocesamiento de datos detallado.

División de datos para entrenamiento y pruebas

Una vez que los datos han sido preprocesados, el siguiente paso es dividir los datos en partes que se utilizarán para crear y entrenar el modelo y para probar y evaluar el modelo que se produce. Hay varias teorías detrás de qué porcentaje de datos debe dividirse entre entrenamiento y prueba. En este tutorial, usamos el 98 % de los datos para entrenamiento y el 2 % de los datos para pruebas.

División de prueba y entrenamiento

Preparación del modelo de clasificación

Hay varios modelos de clasificación que son populares y que han demostrado que funcionan con mucha precisión. En este tutorial, aplicamos el clasificador de bosque aleatorio inicializando la biblioteca proporcionada por Sklearn. Como parte de esta ruta de aprendizaje, hicimos una descripción detallada y una comparación de los diversos modelos de clasificación en Aprender algoritmos de clasificación usando Python y scikit-learn. Por ahora, omitiremos los detalles de cómo funciona el bosque aleatorio y continuaremos con la creación de nuestro primer modelo de machine learning.

Inicializar modelo

Recopilación de los pasos usando pipeline

En esta ruta de aprendizaje, usamos pipelines. Los pipelines son una forma conveniente de diseñar tu procesamiento de datos en un flujo de machine learning. La idea detrás del uso de pipelines se explica en detalle en Aprenda algoritmos de clasificación usando Python y scikit-learn. El siguiente ejemplo de código muestra cómo se configuran los pipelines usando sklearn.

Crear pipeline

Entrenamiento del modelo

El paso final para crear el modelo se llama modelado, donde básicamente entrenas a tu algoritmo de machine learning. El 98 % de los datos que se dividieron en el momento de la división de datos se usa para entrenar el modelo que se inicializó en el paso anterior.

Modelo de entrenamiento

Ejecución de previsiones en el modelo

Una vez entrenado el modelo, está listo para algunos análisis. En este paso, el 2 % de los datos que se reservó para probar el modelo se usa para ejecutar previsiones. Los datos son cubiertos sin ninguna salida y se transfieren como se muestra en la siguiente imagen. La salida prevista se recopila para evaluarla con los resultados reales, y eso es lo que estamos haciendo en el siguiente paso.

Modelo de prueba

Evaluación y visualización del rendimiento del modelo

Los resultados de la previsión adquiridos en el paso anterior se comparan utilizando lo que deberían haber sido los resultados reales. Se generan varias métricas de evaluación para calcular el rendimiento del modelo.

Comparación 2D Evaluación de CM

Conclusión

Hasta que la evaluación proporcione puntuaciones satisfactorias, deberías repetir el preprocesamiento de datos mediante pasos de evaluación ajustando lo que se denominan hiperparámetros.

Comparar el modelo

En este tutorial, desarrollamos un modelo básico de clasificación de machine learning. El tutorial forma parte de la ruta de aprendizaje de Machine learning para desarrolladores. En el siguiente tutorial de la ruta de aprendizaje, Aprende algoritmos de regresión con Python y scikit-learn, profundizamos en cómo funciona cada uno de los algoritmos para llegar a estas previsiones.