TUTORIAL PROYECTO: Trabajando con datos

Clase 9 de 32Curso de Introducción a Machine Learning 2018

DATOS

Los datos son las entradas para nuestro modelo de Machine Learning. Para este proyecto, vamos a utilizar un set de datos popular que contiene imágenes de dígitos numéricos escritos a mano. El modelo de Machine Learning que vamos a entrenar, va a aprender a distinguir entre los diferentes dígitos. Cada una de las imágenes con cada uno de los dígitos será la entrada al modelo y el modelo nos dará de respuesta, cuál es el dígito que “cree” que es.

Para trabajar con grupos de datos y hacer algunas gráficas, vamos a utilizar diferentes paquetes o bibliotecas (‘libraries’) que son compatibles con Python.

  • Para el trabajo con listas de datos: NumPy
  • Para hacer las gráficas: Matplotlib
  • Para seleccionar el modelo de aprendizaje de Machine Learning: Scikit-Learn

Instalando con CONDA CONDA es un manejador de paquetes, ambientes, etc para diferentes lenguajes de programación, nosotros lo utilizamos para Python. En consola con los siguientes comandos podemos instalar nuestros requerimientos previos:

$ conda install -c anaconda numpy Con esta instrucción por línea de comando, utilizamos el servicio de anaconda para instalar el paquete de Numpy en nuestro sistema, anaconda se ocupa de buscar los paquetes en internet para instalarlo. Luego utilizaremos Numpy cuando lo importemos: import numpy

$ conda install -c conda-forge matplotlib Con esta instrucción por línea de comando, utilizamos el servicio de anaconda para instalar el paquete de Matplotlib en nuestro sistema, anaconda se ocupa de buscar los paquetes en internet para instalarlo. Luego utilizaremos Matplotlib cuando lo importemos: from matplotlib import pyplot

$ conda install -c anaconda scikit-learn Con esta instrucción por línea de comando, utilizamos el servicio de anaconda para instalar el paquete de scikit-learn en nuestro sistema, anaconda se ocupa de buscar los paquetes en internet para instalarlo. Scikit-Learn es el lugar de donde sacaremos los modelos de Machine Learning para entrenarlos con nuestros datos. Luego utilizaremos scikit-learn cuando lo importemos:

from sklearn.model_selection import train_test_split from sklearn.tree import DecisionTreeClassifier from sklearn.metrics import confusion_matrix from sklearn.ensemble import RandomForestClassifier

Instalando con PIP PIP es el manager de paquetes de Python. Podemos ir directamente a la línea de comando e introducir el comando para instalar los paquetes que necesitamos: Para numpy

$ pip install numpy

Con esta instrucción en nuestra línea de comando, el manager de paquetes de Python va a buscar el paquete Numpy para instalarlo en nuestro sistema. Luego utilizaremos en nuestro ambiente de trabajo (Jupiter Notebook) cuando lo importemos: import numpy

para matplotlib

$ pip install matplotlib

Con esta instrucción en nuestra línea de comando, el manager de paquetes de Python va a buscar el paquete de matplotlib para instalarlo en nuestro sistema. Luego utilizaremos en nuestro ambiente de trabajo (Jupiter Notebook) cuando lo importemos: from matplotlib import pyplot

para scikit learn el primero o el segundo

$ pip install sklearn** #pip install -U scikit-learn Con esta instrucción en nuestra línea de comando, el manager de paquetes de Python va a buscar el paquete de scikit-learn para instalarlo en nuestro sistema. Luego utilizaremos en nuestro ambiente de trabajo (Jupiter Notebook) cuando lo importemos:

from sklearn.model_selection import train_test_split from sklearn.tree import DecisionTreeClassifier from sklearn.metrics import confusion_matrix from sklearn.ensemble import RandomForestClassifier`

Es posible utilizar esta instrucción pip install -U scikit-learno esta pip install sklearn

También, es posible invocar el set de datos a utilizar desde línea de comando:

$ pip install python-mnist Collecting python-mnist Installing collected packages: python-mnist Successfully installed python-mnist-0.6

Con el comando de pip install el mnist, PIP busca el paquete mnist en Python para instalarlo en nuestro sistema.

SET DE DATOS MNIST El set de datos se lo encuentra aquíde donde vamos a descargar los 4 folders.

  • train-images-idx3-ubyte.gz: training set images
  • train-labels-idx1-ubyte.gz: training set labels
  • t10k-images-idx3-ubyte.gz: test set images
  • t10k-labels-idx1-ubyte.gz: test set labels

Los datos en formato .gz descomprimirlos dentro de un folder MNIST_data

$ gzip *ubyte.gz -d Este comando para terminal de Mac OS permite descomprimir los archivos descargados que vienen en formato “.gz” y ponerlos en un formato que luego puedan ser leídos por medio de instrucciones desde nuestro ambiente de trabajo.

Y para importar estos datos a nuestro espacio de trabajo utilizamos ya sea en nuestro documento python o nuestro Jupyter notebook:

# importar del módulo mnist from mnist import **MNIST** Ya que usamos pip para instalar el python-mnist podemos importarlo en nuestro espacio de trabajo.

#importar el dataset mndata = MNIST('MNIST_data') En la variable mnist descargamos la info de nuestro data set que incluye los datos de entrenamiento, como los datos de prueba.

# (features -> datos y labels -> etiquetas) datos, labels = mndata.load_training() En las variables datos y labels, asignamos los datos que serán de entrenamiento con sus respectivas etiquetas por medio del mndata definido antes y su función load_training()

VISUALIZACION

# librerías %matplotlib inline from matplotlib import pyplot as plt

# Trabajo con ARRAYs

# NUMPY import numpy as np

# matplotlib escala de grises plt.gray() for i in range(25): plt.subplot(5,5,i+1) d_image = datos[i] d_image = np.array(d_image, dtype='float') pixels = d_image.reshape((28, 28)) plt.imshow(pixels, cmap='gray') plt.title(labels[i]) plt.axis('o`f`f`') plt.show()
pan.png

# [sk-learn](https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html) para dividir todo el set de entrenamiento en: entrenamiento y validación

from sklearn.model_selection import train_test_split

DATOS

# todos los datos de training... deben ser divididos # Datos de Entremamiento 70% (features, labels) # Datos de Testing 30% (features y labels) # sklearn.model_selection.train_test_split(*arrays, **options) # train_data, test_data, train_labels, test_labels # 70% del total de los datos serán para el training set train_data, test_data, train_labels, test_labels = train_test_split(datos, labels, test_size=0.3, random_state=42)

Continuaremos aprendiendo sobre los diferentes modelos de Machine Learning Supervisado.