Guia 3
Guia 3
Guia 3
CÓDIGO: PA-FM-004
PROGRAMAS ACADÉMICOS
GUÍA DE LABORATORIO DE
ELECTIVA II
Unidad Didáctica 1: Introducción teórica y práctica de Machine Learning (ML)
Eje Temático 6: Tipos de aprendizaje en Machine Learning, Python, Librerías e inicio de sintaxis
Presaberes Requeridos
Python, Anaconda y Jupyter Notebook.
Construcción de gráficos usando la librería MatplotLib.
Carga de bases de datos y construcción de DataFrame
Conocimiento de comandos básicos para le ejecución de operaciones estadísticas.
Nombre del Proceso:
CÓDIGO: PA-FM-004
PROGRAMAS ACADÉMICOS
Diferentes son los lenguajes de programación que se pueden emplear para Machine Learning.
No obstante, R, Julia, Python y Matlab son los preferidos donde el único lenguaje que exige una
licencia paga es Matlab y, por tanto, en la mayoría de casos resulta descartado; entre los tres
programas restantes R tiene un relación directa en el procesamiento de datos estadísticos, Julia
está teniendo un crecimiento interesante y resulta amigable en el momento de emplearlo. Sin
embargo, el más exitoso es Python resulta ser un lenguaje versátil con una amplia gama de
librerías y una economía en el recurso de tiempo complementado con un sinnúmero de blogs
que resuelven abundantes dudas respecto a su ejecución y, por tanto, es menester aprender
este lenguaje.
A lo largo de la cátedra se ha podido constatar que Python y sus múltiples librerías facilitan el
trabajo de programación y optimizan el análisis estadístico de, prácticamente, cualquier base
de datos. Cuando se trata de hacer Machine Learning además de las librerías ya expuesta, es
imprescindible utilizar las librerías IPython, SciPy y Scikit-Learn. IPython ofrece un soporte de
visualización robusto lo cual facilita el análisis gráfico a partir de instrucciones sencillas, SciPy
enfocado en algoritmos matemáticos principalmente diagonaliza matrices de n dimensiones lo
cual es necesario en la mayoría de estudios científicos y Scikit-Learn una amplia plataforma con
operaciones estadísticas y medios gráficos que permiten aplicar Machine Learning. A lo largo
de esta sesión se invocarán estas librerías con sus nickname asociados enfocándonos en
Nombre del Proceso:
CÓDIGO: PA-FM-004
PROGRAMAS ACADÉMICOS
Machine Learning, de modo que, autónomamente el estudioso podrá profundizar en todas las
virtudes que ofrecen cada una de las tres librerías en cuestión
Momento 1
Recordando las distribuciones estadísticas
A partir del debate se discute acerca de las principales distribuciones estadísticas cómo deben
ser utilizadas. Posterior al debate el docente sintetiza la información y complementa por medio
de una exposición relacionada con los tipos de distribución.
Practica computacional enfocada a desarrollar líneas de código en las que se visualicen las
distribuciones: Uniforme, Normal y exponencial.
En Jupyter Notebook el estudiante debe contestar las siguientes preguntas e incluir la gráfica
asociada a cada distribución.
1. Defina cada una de las distribuciones implementadas en la práctica computacional.
2. ¿Qué son los bins? ¿Qué utilidad tienen?
3. En una distribución uniforme la frecuencia es la misma para cualquier evento. No
obstante, al graficar la distribución no se observa una envolvente constante ¿A qué sed
debe ese comportamiento?
4. La distribución exponencial contiene el número de Euler 𝑒 al igual que la distribución
Gaussiana, pero está última mencionada no exhibe un crecimiento o decrecimiento
exponencial ¿Qué sugiere usted que ocurre para que no haya un comportamiento
exponencial en la distribución normal?
5. Señale por lo menos un ejemplo para cada una de las tres distribuciones estudiadas.
Momentos 2
Datos anómalos y datos faltantes
De acuerdo con la experiencia de los estudiosos en el tratamiento de bases de datos que
contengan datos anómalos y/o faltantes se plantea una actividad computacional guiada por
el docente, en la que los estudiosos conocerán o reforzaran la prueba de Tukey que solo es
aplicable a distribuciones normales.
Momento 3
Modelos de Machine Learning
Después de conocer y comprender los conceptos básicos que implican la aplicación de
aprendizaje de máquina, damos inicio a un modelo de Machine Learning planteado en el libro
de texto “Introduction to machine learning with Python, a guide for data scientists “.
Antes de iniciar el problema y el desarrollo del respectivo código verificamos las versiones de
Python y sus librerías asociados, con el fin de garantizar que el código será soportado.
import sys
print("Python version: {}".format(sys.version))
import pandas as pd
print("pandas version: {}".format(pd.__version__))
import matplotlib
print("matplotlib version: {}".format(matplotlib.__version__))
import numpy as np
print("NumPy version: {}".format(np.__version__))
import scipy as sp
print("SciPy version: {}".format(sp.__version__))
import IPython
print("IPython version: {}".format(IPython.__version__))
import sklearn
print("scikit-learn version: {}".format(sklearn.__version__))
Dado que disponemos de mediciones para las que conocemos la especie correcta de iris, se
trata de un problema de aprendizaje supervisado. En este problema, queremos predecir una de
varias opciones (la especie de iris). Es un ejemplo de problema de clasificación. Las posibles
salidas (diferentes especies de iris) se denominan clases. Cada iris del conjunto de datos
pertenece a una de las tres clases, por lo que este problema es un problema de clasificación
de tres clases. El resultado deseado para un único punto de datos (un iris) es la especie de esta
flor. Para un punto de datos concreto, la especie a la que pertenece se denomina etiqueta.
Conozcamos la data
La base de datos usada en este ejemplo es muy empleada en los inicios de Machine Learning
y e provista por Scikit-Learn en el módulo datasets. La data la cargamos invocando la función
load_iris, es decir,
El objeto iris devuelto por load_iris es un objeto Bunch, que es muy similar a un diccionario. a un
diccionario. Contiene claves y valores:
El valor de la clave DESCR es una breve descripción del conjunto de datos. Aquí mostramos el
principio de la descripción (siéntase libre de buscar el resto usted mismo):
print(iris_dataset['DESCR'][:193] + "\n...")
• ¿Qué indica el número 193 y el término después del signo más? Explore esta línea de código.
El valor del key target_names es una matriz, que contiene las especies de flor que queremos predecir.
Digite la siguiente línea de comando e indique que información especifica
Los datos propiamente dichos están contenidos en los campos target y data contiene las
medidas numéricas de la longitud del sépalo, la anchura del sépalo, la longitud del pétalo y la
anchura del pétalo en una matriz NumPy array, como se constata el digitar la siguiente
instrucción
Las filas en arreglo data corresponden a las flores, mientras las columnas representan
las cuatro medidas que fueron practicadas a cada flor.
Vemos que la matriz contiene medidas para 150 flores diferentes. En el aprendizaje
automático los elementos individuales se denominan muestras, y sus propiedades se
denominan características. La forma de la matriz de datos es el número de muestras
multiplicado por el número de características. Esta es una convención en scikit-learn,
y sus datos siempre se supone que tienen esta forma. Aquí están los valores de las
características de las cinco primeros muestras:
• ¿Cuál es el valor del ancho del pétalo de las primeras cuatro flores?
• ¿Cuánto mide la longitud del sépalo de la primera flor?
• ¿En qué unidades se miden las longitudes y anchos?
El target array contiene las especies de cada unas de las flores que fueron medidas,
también con un arreglo en NumPy, como se puede verificar
print("Target:\n{}".format(iris_dataset['target']))
Desafortunadamente, no podemos utilizar los datos con los que hemos construido el modelo
para evaluarlo. Esto se debe a que nuestro modelo siempre puede simplemente recordar todo
el conjunto de entrenamiento y, por tanto, siempre predecirá la etiqueta correcta para
cualquier punto del conjunto de entrenamiento. Este "recuerdo" no nos indica si nuestro modelo
se generalizará bien (en otras palabras, si también funcionará bien con nuevos datos).
Para evaluar el rendimiento del modelo, le mostramos datos nuevos (datos que no ha visto
antes) para los que tenemos etiquetas. Esto suele hacerse dividiendo los datos etiquetados que
hemos recopilado (en este caso, nuestras 150 mediciones de flores) en dos partes. Una parte de
los datos se utiliza para construir nuestro modelo de aprendizaje automático, y se denomina
datos de entrenamiento o conjunto de entrenamiento. El resto de los datos se utilizarán para
evaluar qué tan bien funciona el modelo; esto se llama los datos de prueba, conjunto de
prueba, o conjunto de espera.
scikit-learn contiene una función que baraja el conjunto de datos y lo divide para usted: la
función train_test_split. Esta función extrae el 75% de las filas de los datos como conjunto de
entrenamiento, junto con las etiquetas correspondientes a estos datos. El 25% restante de los
datos, junto con las etiquetas restantes, se declara conjunto de prueba. Decidir cuántos datos
quieres poner en el conjunto de entrenamiento y en el de prueba respectivamente es algo
arbitrario, pero usar un conjunto de prueba que contenga el 25% de los datos es una buena
regla general. En scikit-learn, los datos se denotan normalmente con una X mayúscula, mientras
que las etiquetas se denotan con una y minúscula. Esto se inspira en la formulación estándar
𝑓(𝑥) = 𝑦 en matemáticas, donde x es la entrada a una función e y es la salida. Siguiendo más
convenciones de las matemáticas, utilizamos una X mayúscula porque los datos son un arreglo
bidimensional (una matriz) y una y minúscula porque el target es una matriz unidimensional (un
vector).
Invoquemos la función train_test_split sobre nuestros datos y asignemos las salidas usando esta
nomenclatura:
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(
iris_dataset['data'], iris_dataset['target'], random_state=0)
random_state. Esto hará que el resultado sea determinista, por lo que esta línea
siempre tendrá el mismo resultado.
La salida de la función train_test_split es X_train, X_test, y_train, y y_test, que son matrices NumPy.
X_train contiene el 75% de las filas del conjunto de datos, y X_test contiene el 25% restante:
CONSIDERACIONES ÉTICAS
● No aplica.
Para el inicio de las actividades de la práctica de laboratorio de sistemas, recuerde las siguientes
indicaciones:
Indicaciones generales para manejo de riesgo eléctrico:
▪ Durante la permanencia en el laboratorio, el practicante debe certificar que se cumple
y se sigue con el Reglamento Técnico de Instalaciones Eléctricas (RETIE), Resolución 18
0398 de 7 de abril de 2004 y Resolución 18 1419 del 1 de noviembre de 2005 del Ministerio
de Minas y Energía. (artículo 5. Riesgos eléctricos) RETIE
▪ Revisar que el área de trabajo esté despejada sin elementos ajenos a la práctica,
disponer materiales de forma organizada.
▪ No ingresar líquidos o alimentos al área de laboratorio, que puedan causar riesgos de
cortocircuitos o afectar los resultados de la práctica.
▪ No ingresar al laboratorio bajo el efecto de sustancias psicoactivas o alcohólicas.
Al finalizar la revisión, recolección y organización del material, se evaluará todo lo trabajado con
el cuestionario en Canvas.
Palabras Clave
Machine Learning
Bibliografía Recomendada
Control de cambios
Fecha de Descripción Participantes
Actualización
Se ajustó el resultado de aprendizaje
y se actualizaron las actividades de
24 de febrero
trabajo autónomo para que el William Javier Rodríguez Cruz
de 2023
estudioso optimice su proceso.