/tutorial-sklearn

Tutorial sobre scikit-learn completo

Primary LanguageHTMLCreative Commons Zero v1.0 UniversalCC0-1.0

Talleres de ciencia de datos y aprendizaje automático

Este repositorio contiene una serie de material sobre un breve tutorial sobre scikit-learn en Python. Está basado en el tutorial de scikit-learn realizado en la conferencia Scipy2017 (ver referencias).

Conseguir el material para el tutorial

Si tienes una cuenta de Github, la forma más conveniente de bajar el material es realizar un clone del repositorio GitHub o hacer un fork. Puedes clonar el repositorio con el comando:

git clone https://github.com/ayrna/tutorial-sklearn.git

Si no estás familiarizado con GitHub o no tienes cuenta, también puedes bajar todo el repositorio como un archivo .zip, accediendo a Clone or download en la cabecera del repositorio (https://github.com/ayrna/tutorial-sklearn) y pulsando sobre Download ZIP.

Por favor, ten en cuenta que los contenidos del repositorio pueden cambiar a última hora, así que recomendamos que intentes actualizar los contenidos antes de cada sesión. Si tienes una cuenta de GitHub y has clonado el repositorio, solo tienes que usar el comando:

git pull origin master

En otro caso, tendrás que descargar de nuevo el .zip cada vez que quieras actualizar los ficheros.

Notas de instalación

Este tutorial requiere tener instalaciones lo más recientes posibles de:

Este último es importante. Si lo tienes correctamente instalado, deberías poder teclear:

    jupyter notebook

en tu terminal de comandos y ver el panel de carga de libros de notas en tu navegador web. Intenta abrir y ejecutar cualquiera de los libros que contiene este curso, para ver si funciona todo correctamente.

Instalación en equipos personales

Para aquellos usuarios que no tengan las dependencias instaladas, una forma relativamente sencilla de conseguirlas es utilizar una distribución de Python como Anaconda CE, que incluye los paquetes de Python más relevantes para ciencia, matemáticas, ingeniería y análisis de datos. Anaconda puede descargarse e instalarse de forma libre, incluyendo el uso comercial y la redistribución. Los códigos incluidos en este tutorial deberían ser compatibles con Python 2.7 y Python 3.4-3.6. Suponiendo que tengas Anaconda instalado, los siguientes comandos crean un entorno nuevo llamado sklearn-env e instalan todas las dependencias:

conda update conda
conda update anaconda
conda create --prefix ~/sklearn-env scikit-learn
source activate sklearn-env
conda install matplotlib
conda install ipython
conda install pandas
conda install Pillow

Preparación de equipos en la UCO (ThinkStation)

Los equipos de la UCO están provistos de todo el material necesario para crear un entorno donde trabajaremos durante todas las sesiones de los talleres. Con el comando pip instalamos las bibliotecas necesarias para trabajar:

$ pip install --user --upgrade scikit-learn pandas

Como puedes observamos, instalamos las librerías con la opción --user, ya que si no requeriríamos permisos de administración. Si tienes algún tipo de problema durante la instalación, puedes limpiar la carpeta $HOME/.local/lib/python2.7/site-packages, pero vigila previamente que no tengas librerías que quieras mantener.

En algunas instalaciones de Linux hemos visto que la dependencia argparse no se instala automáticamente, puedes arreglarlo así:

$ pip install argparse

Revisión de una correcta instalación

Tras obtener el material, recomendamos encarecidamente abrir y ejecutar el libro de notas check_env.ipynb, que se encuentra en la raíz del repositorio. Para ello, ejecuta el comando:

jupyter notebook check_env.ipynb

Una vez dentro del libro, ejecuta la única celda de código pulsando sobre el botón "Run Cells", tal y como muestra esta figura:

Si tu entorno satisface todos los requisitos para el tutorial, el código ejecutado debería mostrar una salida como la siguiente:

Using python in /home/ayrna/anaconda3
3.6.1 |Anaconda 4.4.0 (64-bit)| (default, May 11 2017, 13:09:58)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)]

[ OK ] ipywidgets version 7.1.1
[ OK ] scipy version 1.0.0
[ OK ] PIL version 1.1.7
[ OK ] IPython version 5.4.1
[ OK ] numpy version 1.14.0
[ OK ] pandas version 0.22.0
[ OK ] matplotlib version 2.1.2
[ OK ] sklearn version 0.19.1

Aunque no sea un requisito, te recomendamos actualizar los paquetes Python a su ultima versión, para así asegurar la mejor compatibilidad con el material didáctico. Puedes actualizar los paquetes con los comandos:

pip install [package-name] --upgrade

Descarga de las bases de datos

Los datos para este tutorial no están incluidos en el repositorio. Vamos a utilizar varios datasets: muchos vienen en scikit-learn, el cuál descarga y guarda los datos.

Debido a que la red puede fallar, sería una buena idea descargar algunos de los datasets (los más pesados) antes de las clases. Por favor, ejecuta:

python fetch_data.py

para descargar estos datasets.

El tamaño de la descarga de los ficheros es, aproximadamente, 280MB y, una vez extraídos en disco ocuparán unos 480MB de tu disco duro.

Sesiones y temas

Para cargar cualquier sesión debes iniciar jupyter notebook.

1. Visualización, aprendizaje supervisado y métodos de evaluación (viernes 7 abril)

  • 1.01. Introducción a aprendizaje automático en Python [notebook][html]
  • 1.02. Herramientas científicas en Python [notebook][html]
  • 1.03. Representación y visualización de datos [notebook][html]
  • 1.04. Aprendizaje supervisado: entrenamiento y test [notebook][html]
  • 1.05. Aprendizaje supervisado: clasificación [notebook][html]
  • 1.06. Aprendizaje supervisado: regresión [notebook][html]
  • 1.07. Caso de estudio - Supervivencia en el Titanic [notebook][html]
  • 1.08. Validación cruzada y métodos de evaluación de rendimiento [notebook][html]
  • 1.09. Selección de parámetros, validación y test [notebook][html]

2. Aprendizaje no supervisado (viernes 20 abril)

Nota: Mantenemos la numeración de los cuadernos con el curso original de sklearn para quién quiera hacer la versión completa del curso.

  • 2.02. Aprendizaje no supervisado: agrupamiento [notebook][html]
  • 2.01. Aprendizaje no supervisado: transformación [notebook][html]
  • 2.05. Encadenamiento con tuberías [notebook][html]

3. Aspectos avanzados (jueves 3 de mayo)

Nota: Mantenemos la numeración de los cuadernos con el curso original de sklearn para quién quiera hacer la versión completa del curso.

  • 3.01. Extracción de características de un texto mediante Bag-of-Words (bolsas de palabras) [notebook][html]
  • 3.02. Caso de estudio - Clasificación de texto para detección de spam en SMS [notebook][html]
  • 3.05. Aprendizaje supervisado: árboles de decisión y bosques aleatorios [notebook][html]
  • 3.06. Selección de características [notebook][html]

Referencias

Este tutorial es una versión reducida del tutorial original de sklearn por Pedro A. Gutiérrez, que a su vez se baja en el tutorial de Alex Gramfort y Andreas Mueller [Github][Youtube1][Youtube2]

Se recomiendan los siguientes tutoriales adicionales para aprender más sobre el manejo de la librería:

Por último, para aprender la sintaxis básica de Python en menos de 13 horas, se recomienda el siguiente curso de CodeAcademy: