Tutorial sobre Machine Learning con Python

Un paseo por SciPy

Fotografía de Maria Krasnova, disponible en Unsplash.

¿Te has quedado sin planes para el fin de semana? Aunque tu lista de tareas pendientes y, generalmente, poco atractivas parezca haber crecido de manera exponencial en los últimos tiempos, ¿el cuerpo te pide algo distinto?

¿Qué tal invertir las próximas seis horas y media de tu vida disfrutando de un tutorial sobre Machine Learning con Python? Suena interesante, ¿verdad? Al menos es así en esta especie de universo paralelo donde parece que vivo últimamente.

En la cuenta de YouTube asociada a Enthought, creadores de la conocida distribución Canopy para Python, ha aparecido recientemente una lista de reproducción que alberga los tutoriales y charlas correspondientes a la última convención SciPy: “SciPy 2017: Scientific Computing with Python Conference”.

Aquel al que hacía referencia en el primer párrafo estuvo dividido en dos sesiones, a las que podemos acceder directamente a través de los siguientes enlaces:

No obstante, antes de lanzarte de cabeza a su visualización, te recomendaría adoptases una actitud de aprendizaje activo para un mayor aprovechamiento. Es un tutorial bastante práctico, que se apoya en el uso de numerosos Jupyter Notebooks que también tenemos a nuestra disposición sin coste alguno. ¿Por qué no experimentar personalmente con el código para así reforzar las ideas vertidas y el uso de distintos algoritmos?

La única pega que presenta esta aproximación al tutorial reside en que nuestro equipo debe cumplir una serie de requisitos, que exploraremos rápidamente en la siguiente sección.

Instalación de las herramientas asociadas

En función de los distintos programas que ya estén instalados en nuestro sistema, el paseo por el siguiente listado nos llevará más o menos tiempo:

  1. Utilizando nuestro navegador favorito, dirijámonos en primer lugar al repositorio en GitHub, que contiene los notebooks asociados al tutorial.

  2. Echemos un rápido vistazo a su archivo README.md, que alberga información de interés sobre el mencionado tutorial, así como unas breves instrucciones para que configuremos nuestro equipo de manera adecuada y podamos utilizar el material disponible sin problema alguno.

  3. Clonemos o “forkeemos” (no hace falta que lo compruebes, ambos sabemos que esa aberración no va a estar registrada en el diccionario, pero si utilizas git me habrás entendido) el propio repositorio. Si no tienes cuenta en GitHub o, directamente, no estás entiendo nada de lo que llevo escrito en este punto, sitúate en la parte superior derecha de la página asociada al repositorio, haz clic sobre el botón Clone or download y pulsa sobre el enlace Download ZIP. Descargarás un archivo comprimido que contiene todo el material de este repositorio, de forma que podrás descomprimirlo en tu unidad de disco duro donde desees y trabajar desde dicha localización.

  4. Iniciemos Jupyter Notebook y naveguemos por los directorios hasta alcanzar la ruta donde hayamos almacenado los materiales del repositorio. Si no dispones de esta aplicación en tu ordenador, una manera fácil de hacerte con ella, y a la vez con los módulos que se utilizarán a lo largo del tutorial, es descargar la distribución de Python Anaconda asociada a la versión 3.6 del mencionado lenguaje de programación. Por otro lado, si es la primera vez que escuchas hablar de notebooks (en R y Python son muy populares hoy en día), te aconsejaría que previamente leyeses algún tutorial asociado a esta herramienta. Este es más que recomendable.

  5. En la raíz del repositorio figura el notebook check_env.ipynb. Abrámoslo y ejecutemos la única celda que lo compone, que es un bloque de código que comprueba si nuestro sistema cumple los requisitos necesarios para seguir sin problemas el tutorial. En el caso de que alguna de las líneas de la salida asociadas a los diversos módulos no esté precedida por un [OK], tendremos que actualizar manualmente la versión del paquete correspondiente.

  6. Opcionalmente, podemos descargar los conjuntos de datos asociados al tutorial (acción recomendable si en algunos momentos vamos a depender de redes wifi para trabajar con el material) sin más que teclear python fetch_data.py.

Notebooks

En mi opinión, si tenemos un mínimo conocimiento de Python y Machine Learning, una buena manera de abordar el tutorial en sí consistiría en llevar a cabo una lectura previa del notebook que nos interese (experimentación con el código incluida), para luego visualizar la parte de la grabación del tutorial donde se desarrolla ese contenido en particular. Finalmente, con la explicación todavía fresca en nuestras cabezas, podríamos reforzar el contenido leyendo de nuevo el notebook concreto. No obstante, si no cumples el primer requisito comentado, directamente te aconsejaría empezar con la grabación e ir revisando posteriormente cada notebook a medida que se vayan abordando durante el vídeo.

A poco que eches un vistazo por encima al material disponible, comprobarás que hay una cantidad más que considerable. Tanto que fue imposible abarcar los 23 notebooks durante las dos sesiones que se llevaron a cabo y, en algunos casos, ciertos temas fueron expuestos de manera bastante tangencial. Es por ello que vuelvo a recomendar no limitarse únicamente a disfrutar de la grabación, sino invertir también cierto tiempo en la lectura de los cuadernos, así como en la experimentación con ellos (realización de ejercicios incluida).

Sin más preámbulos, a continuación, podemos acceder al listado completo de los notebooks disponibles, junto con sus respectivos enlaces tanto a GitHub como al instante en el que comienza su desarrollo en el vídeo de YouTube:

  1. “Introduction to machine learning with sample applications, Supervised and Unsupervised learning”. GitHub. Youtube.

  2. “Scientific Computing Tools for Python: NumPy, SciPy, and matplotlib”. GitHub. YouTube.

  3. “Data formats, preparation, and representation”. GitHub. YouTube.

  4. “Supervised learning: Training and test data”. GitHub. YouTube.

  5. “Supervised learning: Estimators for classification”. GitHub. YouTube.

  6. “Supervised learning: Estimators for regression analysis”. GitHub. YouTube.

  7. “Unsupervised learning: Unsupervised Transformers”. GitHub. YouTube.

  8. “Unsupervised learning: Clustering”. GitHub. YouTube.

  9. “The scikit-learn estimator interface”. GitHub. YouTube.

  10. “Preparing a real-world dataset (titanic)”. GitHub. YouTube.

  11. “Working with text data via the bag-of-words model”. GitHub. YouTube.

  12. “Case Study - Text classification for SMS spam detection”. GitHub. YouTube.

  13. “Cross-Validation”. GitHub. YouTube.

  14. “Model complexity and grid search for adjusting hyperparameters”. GitHub. YouTube.

  15. “Scikit-learn Pipelines”. GitHub. Debido a la falta de tiempo disponible, este notebook tuvo que ser excluido de la sesión.

  16. “Supervised learning: Performance metrics for classification”. GitHub. YouTube.

  17. “Supervised learning: Linear Models”. GitHub. YouTube.

  18. “Supervised learning: Decision trees and random forests, and ensemble methods”. GitHub. YouTube.

  19. “Supervised learning: feature selection”. GitHub. Por falta de tiempo, se excluyó de la sesión.

  20. “Unsupervised learning: Hierarchical and density-based clustering algorithms”. GitHub. YouTube.

  21. “Unsupervised learning: Non-linear dimensionality reduction”. GitHub. Debido a la falta de tiempo disponible, este notebook tuvo que ser excluido de la sesión.

  22. “Unsupervised learning: Anomaly Detection”. GitHub. YouTube.

  23. “Supervised learning: Out-of-core learning”. GitHub. Debido a la falta de tiempo disponible, este notebook tuvo que ser excluido de la sesión.

Enlaces de utilidad asociados al tutorial

Recojo, a continuación, algunos enlaces, que han surgido a lo largo del artículo, relacionados con el tutorial:

Alexis Sáez
Alexis Sáez
Profesor de matemáticas

Cazador de problemas matemáticos en parajes opositores.