Python3 and machine learning

En nuestra entrega anterior -y con la ayuda del Doctor Jason Brownlee- instalamos Fedora 25 como máquina virtual para tener un entorno de desarrollo específico para Python3: pues bien, el fin último es tener una base para poder desarrollar el “machine learning” a un nivel intermedio, veamos.

¿Qué es el “machine learning”?

Es una ciencia aplicada con ayuda de los ordenadores: de una serie gigantesca de datos obtenidos de nuestro mundo analógico regido por la mecánica cuántica podemos obtener patrones, precisamente lo que hacemos nosotros los seres humanos, como por ejemplo cuando miramos una noche estrellada y percibimos constelaciones que solo están en nuestro cerebro. Muchas universidades en el mundo están abocadas a este estudio y promete ser el futuro en el cual debemos estar preparados para cuando lleguen los ordenadores cuánticos.

Un dato que nos llama la atención es que ya hoy en día tiene una aplicación práctica, para mal, denunciada por Edward Snowden en su cuenta en Twitter:

¿Qué tiene que ver esto con el “machine learning”? Pues que el dispositivo que es utilizado para detectar los patrones de atención de los televidentes durante los comerciales es grabado con un dispositivo originalmente diseñado para juegos denominado Kinetic. En realidad es un dispositivo biométrico que en el año 2011 incluso ganó un premio de 50 mil libras esterlinas por desarrollo innovador al reconocer los movimientos de nuestro cuerpo, interpretarlos y trasladarlo como acciones en los juegos de vídeo. Es así que en solo seis años se le ha conseguido un uso importante en la vida real, acercándonos cada vez más a las historias contadas en las saga de películas “Terminator”.

Esta entrada no pretende ser una guía exhaustiva de Python ni tampoco algo avanzado en el campo de la inteligencia artificial, apenas es la presentación de todo aquello, un abrebocas: primero estableceremos un entorno de programación y luego ejecutaremos un mini curso de 14 lecciones sobre “machine learning” cuyo material es proporcionado al mundo entero por el Dr. Jason Brownlee en su página web (en idioma inglés).

Instalando un entorno basado en Python para el aprendizaje de las máquinas.

Instalando el entorno Python.

Como ya bien sabéis, ya sea por este vuestro humilde portal o por internet -que abunda información- el lenguaje de programación Python viene instalado por defecto en la mayoría de las distribuciones GNU/Linux y Fedora no es la excepción. Para saber cual versión tenemos instalada, ejecutamos nuestra máquina virtual e introducimos nuestras credenciales de usuario. Acto seguido pulsamos ALT+F2 e introducimos la orden “gnome-terminal” para ejecutar una ventana de comandos para lanzar la siguiente línea:

python3 --version

En la figura podemos observar que ya tenemos instalada la versión 3.5.2:

python3 --version
python3 –version

Instalando el conjunto de utilidades para Python3.

Los paquetes que necesitaremos son seis en total:

  • SciPy, conjunto de herramientas que integra los siguientes paquetes:
  • NumPy: herramienta para álgebra lineal, transformadas de Fourier y generación de números aleatorios.
  • Pandas: para manejar estructura de datos.
  • Matplotlib: para plasmar gráficos en 2 dimensiones y algunos en 3D.
  • Scikit-Learn: empleado en la minería de datos.
  • Statsmodels: para modelos estadísticos.

Todas ellas las podemos bien instalar en una sola línea, bien una por una, depende de nuestra paciencia. Por rapidez escogeremos la primera y en la misma ventana terminal que tenemos abierta colocamos:

sudo dnf install python3-numpy python3-scipy python3-scikit-learn python3-pandas python3-matplotlib python3-statsmodels

El comando DNF es la abreviatura para Dandified Yum, que tal como explicamos, es el equivalente al comando apt-get utilizado en las distribuciones GNU/Linux basadas en Debian. Así que autorizamos la descarga, que son más o menos 92 megabytes:

sudo dnf install python3-numpy python3-scipy python3-scikit-learn python3-pandas python3-matplotlib python3-statsmodels
sudo dnf install python3-numpy python3-scipy python3-scikit-learn python3-pandas python3-matplotlib python3-statsmodels
Instalando entorno Python3 para «machine learning» 1
Instalando entorno Python3 para «machine learning» 1
Instalando entorno Python3 para «machine learning» 2
Instalando entorno Python3 para «machine learning» 2

Una vez se han descargado a nuestro ordenador virtual, se hace la verificación de contenido y se procede a descomprimir e instalar; allí van 200 megabytes adicionales:

Instalando entorno Python3 para «machine learning» 3
Instalando entorno Python3 para «machine learning» 3
Instalando entorno Python3 para «machine learning» 4
Instalando entorno Python3 para «machine learning» 4

Confirmación del entorno instalado.

Una vez finalizado procedemos a “crear” un guión en bash para averiguar rápidamente las versiones instaladas. Aquí viene la utilidad de haber instalado las utilerías de “VirtualBox Guest Additions” en nuestra entrada anterior: podremos “copiar y pegar” texto entre nuestro ordenador anfitrión y el ordenador virtual.

Habilitar el portapapeles entre VirtualBox y las máquinas virtuales.

Antes de poder “copia y pegar” texto debemos primero habilitar su paso por medio de VirtualBox: seleccionamos la máquina virtual Fedora y presionamos CONTROL+S para entrar a la configuración y vamos a la sección “Interfaz de usuario” -> “Dispositivos”:

VirtualBox portapapeles entre ordenador anfitrión y ordenador virtual
VirtualBox portapapeles entre ordenador anfitrión y ordenador virtual

Descolgamos la lista y seleccionamos “Anfitrión a invitado” y damos “Aceptar”.

VirtualBox portapapeles ordenador anfitrión a invitado
VirtualBox portapapeles ordenador anfitrión a invitado

Archivo de comando “versions.py”.

Ahora que podemos pasar el portapapeles a la máquina virtual (tedioso procedimiento para poder habilitarlo), seleccionamos, copiamos y pegamos lo siguiente:

# scipy
import scipy
print('scipy: %s' % scipy.__version__)
# numpy
import numpy
print('numpy: %s' % numpy.__version__)
# matplotlib
import matplotlib
print('matplotlib: %s' % matplotlib.__version__)
# pandas
import pandas
print('pandas: %s' % pandas.__version__)
# scikit-learn
import sklearn
print('sklearn: %s' % sklearn.__version__)
# statsmodels
import statsmodels
print('statsmodels: %s' % statsmodels.__version__)

 

En las siguientes imágenes utilizamos el editor de textos gedit, pero sentiros libres de utilizar vuestro preferido (de hecho nosotros más adelante instalamos nano):

Guión para detectar los componentes instalados de Python3 uno
Guión para detectar los componentes instalados de Python3 uno
Guión para detectar los componentes instalados de Python3 dos
Guión para detectar los componentes instalados de Python3 dos
Guión para detectar los componentes instalados de Python3 tres
Guión para detectar los componentes instalados de Python3 tres
Guión para detectar los componentes instalados de Python3 cuatro
Guión para detectar los componentes instalados de Python3 cuatro
Guión para detectar los componentes instalados de Python3 cinco
Guión para detectar los componentes instalados de Python3 cinco

Mini curso de “machine learning” en 14 lecciones.

Con la tutoría del Doctor Jason Brownlee, procedemos conforme a lo explicado en su artículo.

Lección N° 01.

En realidad ya aprobamos la primera lección: la creación de un entorno de trabajo con todos los paquetes necesarios.

Lección N° 02.

 

Fuentes consultadas:

En idioma castellano.

En idioma inglés.