Lección 13 del curso NumPy para Ciencia de Datos y Machine Learning.
En la lección anterior vimos el uso de funciones avanzadas de NumPy que resultan muy útiles en diferentes proyectos de Ciencia de Datos y Machine Learning.
En este último módulo pondremos en práctica todo lo aprendido durante el curso para resolver un problema de Ciencia de Datos y Machine Learning.
Así que en este proyecto final usaremos varias herramientas de NumPy para abordar un problema de segmentación de clientes, en donde será necesario realizar primero una limpieza de los datos, para luego realizar un análisis exploratorio preliminar de los mismos.
Posteriormente, para realizar un análisis más detallado haremos uso del algoritmo k-means, un algoritmo clásico del Machine Learning, que nos permitirá detectar automáticamente los diferentes segmentos de cliente para posteriormente caracterizarlos.
Y todo lo anterior lo haremos haciendo uso de varias de las herramientas de NumPy aprendidas hasta el momento.
Comencemos entonces entendiendo el detalle el problema que resolveremos en este proyecto:
Contenido exclusivo para suscriptores
Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.
En este proyecto usaremos un set de datos recolectado por un centro comercial y que contiene información de la edad y del nivel de compra de sus clientes durante el último año. Y la idea es construir un clasificador basado en el algoritmo k-means, que automáticamente nos permita encontrar los diferentes perfiles de cliente con base en estas dos características (edad y nivel de compra).
Pero antes de construir este clasificador debemos realizar varias tareas de análisis y preparación de nuestro set de datos. Así que comencemos con la primera de ellas, que consiste en realizar la lectura y exploración preliminar de los datos:
Contenido exclusivo para suscriptores
Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.
Bien, esta exploración preliminar del set de datos nos ha permitido ver que existen algunos outliers o valores atípicos. Por ejemplo, algunas edades son negativas o incluso llegan a ser de 120 años mientras que, por otra parte, algunos niveles de compra son negativos o sobrepasan el nivel máximo de la mayoría de los datos.
En la fase de limpieza manejaremos las inconsistencias en estos datos. Comencemos viendo entonces cómo realizar la detección y manejo de datos faltantes (o incompletos):
Contenido exclusivo para suscriptores
Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.
¡Perfecto! Acabamos de ver cómo usar herramientas de NumPy para detectar datos faltantes en nuestro set de datos y para realizar lo que se conoce como imputación, usando técnicas de interpolación, para completar estos datos faltantes.
Veamos ahora cómo realizar la segunda fase de limpieza de datos, el manejo de valores extremos:
Contenido exclusivo para suscriptores
Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.
Muy bien, tras este procedimiento hemos pasado de un set con 373 datos a uno con 368. Es decir que hemos eliminado 5 registros.
Así que en este punto ya podemos realizar un análisis exploratorio más detallado de los datos. Veamos cómo llevar a cabo esta fase:
Contenido exclusivo para suscriptores
Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.
Este análisis exploratorio nos permitió generar una gráfica en donde pudimos estimar de forma aproximada la presencia de 3 segmentos de cliente así como sus características. Sin embargo, por tratarse de una inspección visual, estas estimaciones son aproximadas.
La idea es entonces poder determinar de forma más precisa y objetiva, e idealmente automática, las características de cada segmento. Y acá es donde entra en juego el algoritmo k-means.
Comencemos entonces entendiendo el principio de funcionamiento de este algoritmo:
Contenido exclusivo para suscriptores
Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.
Bien, acabamos de ver cada uno de los pasos que conforman este algoritmo. En esencia, k-means permite agrupar de forma automática un set de datos, donde cada una de las k agrupaciones contendrá datos «similares».
Así que teniendo claros todos los detalles del algoritmo, veamos cómo realizar su implementación usando diferentes herramientas de NumPy. Como tiene varios elementos, esta implementación está dividida en dos videos, acá viene el primero:
Contenido exclusivo para suscriptores
Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.
Muy bien, acabamos de ver cómo inicializar los centroides y cómo calcular la distancia de cada dato a los centroides. Veamos ahora cómo implementar la fase final del algoritmo, lo que nos permitirá realizar la clasificación de los datos:
Contenido exclusivo para suscriptores
Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.
¡Perfecto, ya está listo nuestro algoritmo k-means! y ya lo hemos usado para generar los tres segmentos de cliente de forma automática. Y todo esto con ayuda de diferentes herramientas de NumPy aprendidas a lo largo de este curso.
Así que, habiendo generado las diferentes agrupaciones de clientes, lo único que nos resta es realizar un análisis exploratorio detallado para caracterizar cada uno de los segmentos obtenidos:
Contenido exclusivo para suscriptores
Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.
Perfecto, con el código implementado en esta última parte del proyecto ya hemos caracterizado los tres segmentos de cliente en términos del rango de edades y de niveles de ingreso en cada uno de los casos.
Así que con este proyecto hemos puesto en práctica buena parte de las herramientas aprendidas en este curso y hemos visto otras herramientas adicionales útiles en las fases de limpieza y análisis exploratorio de los datos. Y además hemos implementado el algoritmo k-means, un sencillo método de Machine Learning que permite realizar de forma automática el agrupamiento (o «clustering») de datos.
Y con esto ya hemos culminado este curso de Numpy para Ciencia de Datos y Machine Learning. Así que los invito a ver el video de cierre del curso, en donde haremos una síntesis de todo lo aprendido en el curso y hablaremos de los próximos cursos que vienen en la Academia:
Contenido exclusivo para suscriptores
Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.
¡Así que te felicito por haber completado este curso! y te invito, como de costumbre, a contactarme para que me compartas tus comentarios sobre este curso así como tus sugerencias de nuevos cursos o de cosas que quisieras ver en la Academia y que me permitirán seguir mejorando su contenido.
¡Te envío un saludo y nos vemos en el próximo curso acá en la Academia Online!
Todas las lecciones del curso NumPy para Ciencia de Datos y Machine Learning
