PY020 Machine Learning
PY020 Machine Learning
2
3
4
Python.industria(4.0)
5
6
7 PY020
8 Machine Learning
9
10
11
12
13
14
1 Indice:
2
3 01 Introducción a Machine Learning
4
• Definiciones
5 • Beneficios
6 • Diferencias entre los tipos
7
8
02 Fundamentos
• Características
9 • Bibliotecas principales
10 • Proceso de desarrollo
11 03 Aplicaciones
12 • Ejemplos prácticos de aplicaciones
13
14
01(
1
2
3
4
5 Introducción a Machine
6
7 Learning
8
• Definiciones
9 • Beneficios
10 • Diferencias entre los tipos
11
)
12
13
14
1
2
import ML
3 El Aprendizaje Automático, o Machine Learning en
4 inglés, es una disciplina que se centra en el
5 desarrollo de algoritmos y modelos que permiten a las
computadoras aprender y tomar decisiones a partir de
6 datos.
7
En esencia, es la ciencia de hacer que las máquinas
8 adquieran la capacidad de aprender sin ser programadas
9 explícitamente
10
11
12 ¿En qué se diferencian con
13
la Inteligencia Artificial?
14
1
2
import ML
3 El aprendizaje automático se basa en la idea de que las
4 computadoras pueden aprender patrones a partir de datos y
5 utilizar esos patrones para tomar decisiones o hacer
predicciones.
6
7 La industria 4.0 se caracteriza por la
8 automatización avanzada, la interconexión de
dispositivos y la toma de decisiones inteligentes.
9
10 El aprendizaje automático desempeña un papel
11 fundamental en esta revolución, permitiendo
aplicaciones como el mantenimiento predictivo, la
12 optimización de la cadena de suministro y la
13 detección de fallas.
14
1
2
import ML
3 Aprendizaje •Regresión
4
supervisado
•Clasificación
5
6
7 Aprendizaje
•Reducción de
sin dimensionalidad
8 supervisión
•Clustering
9
10
11 Aprendizaje •Navegación
por
12 refuerzo •AI
13
14
1
2
def ML():
3
Automatización de tareas Predicción/Pronóstico
4
5 Toma de desiciones Optimización
6
7 Personalización Aprendizaje contínuo
8
Detección de anomalías Análisis complejo de datos
9
10
11
12
13
14
02(
1
2
3
4
Fundamentos
5
6
7
8 • Características
• Bibliotecas principales
9 • Proceso de desarrollo
10
11
)
12
13
14
1
2
def ML():
A lo largo de nuestro trabajo, podemos encontrar múltiples bibliotecas que nos serán
3 útiles a la hora de analizar los datos y varias herramientas y algoritmos que permitan
4 una fácil implementación de tareas de aprendizaje:
6
7
8
9
10 Utilizada para el Utilizada para realizar Matplotlib proporciona
análisis y la operaciones matemáticas una amplia variedad de Proporciona herramientas
11 manipulación de datos. en matrices y arreglos herramientas para la para el modelado de datos,
el preprocesamiento, la
Ofrece algoritmos de
aprendizaje automático
Ofrece estructuras de de datos creación de gráficos en avanzados que pueden ser
selección de
12 datos de alto
rendimiento y fácil de
multidimensionales.
Ofrece herramientas
2D y 3D, mientras que
Seaborn ofrece una
características y la
evaluación del modelo.
utilizados para tareas de
clasificación y regresión,
usar, como DataFrames y para realizar cálculos interfaz de alto nivel entre otras. XGBoost se
Ofrece una amplia variedad
13 Series, que permiten numéricos complejos, para la creación de de algoritmos de
aprendizaje automático para
enfoca en mejorar la
precisión del modelo y
trabajar con datos como álgebra lineal y gráficos estadísticos reducir el tiempo de
14
su uso en tareas de
tabulares. transformadas de más sofisticados. entrenamiento mediante el
clasificación, regresión y
Fourier. agrupación, entre otras.
uso de técnicas de
gradiente mejorado y
árboles de decisión.
1
2
def ML():
3 Antes de comenzar…
4
5 Como desarrolladores, es nuestro trabajo identificar
6 nuestra metodología de trabajo, y realizar las tareas
7 previas requeridas antes de comenzar a hacer nuestro
8 proyecto
9
1. Organizar nuestros datos y scripts en un solo directorio accesible
10 2. Preinstalar todos los módulos necesarios, y actualizar los paquetes
11 3. Determinar si vamos a trabajar en el entorno de Python, o si vamos a hacer
scripts y correrlos desde el bash
12
13
14
1
2
def ML(flow):
3
4
5 Evaluar el
Crear
Analizar los proceso y Generar el Entrenar el Realizar Enviar los
predicciones
6 datos preparar
datos
modelo modelo inferencias
/ resultados
datos
7
8
9
10
11
12 Usar modelo
preentrenado
13
14
def ML():
Evaluar el
Crear
1
Analizar los proceso y Generar el Entrenar el Realizar Enviar los
predicciones
datos preparar modelo modelo inferencias datos
/ resultados
datos
2
3
4 Usar
modelo
preentrenado
5
6 Cargamos nuestro módulo Pandas con el alias pd
7
import pandas as pd
8
9 Cargaremos nuestro archivo de datos en una variable con el
10 comando pd.read_csv()
11 csv = pd.read_csv(“PetroleoArg.csv", delimiter=",")
12
Convertimos nuestra variable a un DataFrame df
13
14 df = pd.DataFrame(csv)
def ML():
Evaluar el
Crear
1
Analizar los proceso y Generar el Entrenar el Realizar Enviar los
predicciones
datos preparar modelo modelo inferencias datos
/ resultados
datos
2
3 ¿Qué datos interesantes podemos extraer?
¿Cómo le damos “forma” a los datos?
4 ¿Cómo podemos graficar la información?
¿Qué modelo o algoritmo podemos utilizar?
Usar
modelo
preentrenado
5
6 De nuestro DataFrame, vamos a quedarnos sólo con algunas columnas interesantes
7 columnas_interesantes=["empresa","anio","mes","provincia","cantidad","indice_tiempo","areayacimiento","
concepto","cuenca"]
8 datos = df[columnas_interesantes]
9
A partir de aquí, tenemos nuestros datos listos para filtrarlos, agruparlos, y
10 graficarlos, revelando más información que la que hay disponible a simple vista
11 mirando el DataFrame:
12
13
14
def ML():
Evaluar el
Crear
1
Analizar los proceso y Generar el Entrenar el Realizar Enviar los
predicciones
datos preparar modelo modelo inferencias datos
/ resultados
datos
2
3 ¿Qué algoritmo o modelo describe mejor la tarea que debo
realizar?
¿Qué recursos dispone mi dispositivo?
4 ¿Necesito reentrenar el modelo constantemente?
¿Requiero flexibilidad para agregar o quitar elementos?
Usar
modelo
preentrenado
5
6
7
8
9
10
11
12
13
14
1
2
def ML():
¿Qué algoritmo o modelo describe mejor la tarea
3 que debo realizar?
4
Máquinas de
Árboles de K-Nearest Neighbors
Regresión5lineal: Redes neuronales: vectores de soporte Clustering K-means:
decisión: (KNN):
(SVM):
• Se utiliza6 para • Se utiliza para • imita el • se utiliza para • se utiliza para • se utiliza para
predecir valores clasificar funcionamiento del clasificar, categorizar, agrupar cosas que
numéricos7a partir elementos en cerebro humano encontrando la encontrando los k son similares
de datos, diferentes para procesar y mejor separación puntos de datos entre sí,
8
encontrando una
relación lineal
categorías,
dividiendo los
analizar
información,
entre los datos
utilizando un
más cercanos y
clasificando el
dividiendo los
datos en k
entre las
9
variables de
datos en ramas de
un árbol de
utilizadas para
una amplia
hiperplano en un
espacio de alta
punto de datos
desconocido en
clusters
diferentes.
entrada y la decisiones basadas variedad de dimensión. función de la
variable 10
• Ej.: Agrupar
de en diferentes tareas, desde el • Ej.: detectar spam mayoría de los clientes según sus
salida. características. reconocimiento de en correos vecinos cercanos. hábitos de compra
11 el
• Ej.: Predecir • Ej.: clasificar a imágenes hasta la electrónicos, • Ej.: Predecir si para mejorar la
precio de una casa los clientes de un traducción clasificando el un tumor es segmentación de
en función12de su banco en automática de correo electrónico maligno o benigno mercado.
tamaño y diferentes grupos idiomas. como spam o no en función de su
ubicación.13 en función de su • Ej.: reconocer spam. tamaño y otras
historial de objetos en características.
14 crédito y otros
datos.
imágenes y
etiquetarlos
automáticamente.
def ML():
Evaluar el
Crear
1
Analizar los proceso y Generar el Entrenar el Realizar Enviar los
predicciones
datos preparar modelo modelo inferencias datos
/ resultados
datos
2
En ésta ocasión, vamos a predecir la producción de
3 petróleo promedio en el total de la cuenca “GOLFO
SAN JORGE”.
4 Para ello utilizaremos una regresión con la
Usar
modelo
preentrenado
herramienta xgboost, ya que es un buen algoritmo
5 para utilizar cuando se tratan de series lineales en
el tiempo.
6
Le vamos a “ocultar” al algoritmo los últimos 10
7 valores de la serie, mientras que utilizaremos el
resto de los valores para entrenar y validar el
8 modelo.
11 plt.figure(figsize=(14,8))
sns.set(font_scale=0.5)
12 ax =
sns.lineplot(x="indice_tiempo",y="cantidad",data=GolfoSanJor
13 ge_fl)
plt.xlabel('Año')
14 plt.ylabel('Producción de petróleo real en Golfo San Jorge')
plt.xticks(rotation=45)
plt.show()
def ML():
Evaluar el
Crear
1
Analizar los proceso y Generar el Entrenar el Realizar Enviar los
predicciones
datos preparar modelo modelo inferencias datos
/ resultados
datos
2
Cargamos todas los módulos que vamos a usar a
3 continuación, y separamos los datos para utilizar
como comprobación más tarde
4 Usar
modelo
from sklearn.model_selection import preentrenado
5 train_test_split
import xgboost as xgb
6
7 df_ultimos_10 = GolfoSanJorge_fl.iloc[-10:]
df_sin_ultimos_10 = GolfoSanJorge_fl.iloc[:-10]
8
9 Ahora sí, preparamos los datos restantes (df_sin_ultimos_10) con algunas cosas en mente:
12 XGBoost va a necesitar que los índices (es decir, la fecha) esté en formato “datetime”.
Actualmente la fecha está en formato YYYY-MM
13
XGBoost también necesita los datos en forma de Matriz, no de DataFrame. Es decir, tendremos una
14 matriz de 2 columnas para X, y una matriz (o array) de 1 columna para Y. Para tomar solamente
los valores de un dataframe y hacerlos “matriz” usamos el comando Values
def ML():
Evaluar el
1
Crear
Analizar los proceso y Generar el Entrenar el Realizar Enviar los
predicciones
datos preparar modelo modelo inferencias datos
/ resultados
datos
2
Como dijimos antes, primero debemos convertir el índice
3 en formato Datetime
4 GolfoSanJorge_fl.index = Usar
modelo
pd.to_datetime(GolfoSanJorge_fl.index,
5
preentrenado
format="%Y-%m")
6 X_train, X_test, y_train, y_test =
Luego, convertimos los valores que usaremos para X y
7 para Y
train_test_split(X, y, test_size=0.2,
random_state=42)
8 X = df_sin_ultimos_10.iloc[:, :-1].values
print("Tamaño de X_train:", X_train.shape)
print("Tamaño de y_train:", y_train.shape)
9 y = df_sin_ultimos_10.iloc[:, -1].values
print("Tamaño de X_test:", X_test.shape)
print("Tamaño de y_test:", y_test.shape)
10 De paso, hacemos lo mismo con mis datos que usaremos
para “validar”
11 Y generamos finalmente el modelo
def ML():
Evaluar el
1
Crear
Analizar los proceso y Generar el Entrenar el Realizar Enviar los
predicciones
datos preparar modelo modelo inferencias datos
/ resultados
datos
2
3 ¡Es hora de entrenar el modelo! Con un solo comando, el
algoritmo tomará todos los datos que tiene en su
4 entrada, los comparará con sus salidas, y hará todas las
cuentas internas necesarias para “ajustar” los Usar
modelo
parámetros internos de forma automática.
5
preentrenado
10
11 X w
12 + Y
13
14 B
def ML():
Evaluar el
1
Crear
Analizar los proceso y Generar el Entrenar el Realizar Enviar los
predicciones
datos preparar modelo modelo inferencias datos
/ resultados
datos
2
3 La respuesta es no. Si usamos todos los datos
disponibles para entrenar el modelo, el modelo
4 podría ajustarse demasiado bien a los datos de Usar
entrenamiento (overfitting), pero no funcionar modelo
5
preentrenado
bien con nuevos datos.
def ML():
Evaluar el
1
Crear
Analizar los proceso y Generar el Entrenar el Realizar Enviar los
predicciones
datos preparar modelo modelo inferencias datos
/ resultados
datos
2
3 Al entrenar el modelo, vemos que el error baja en
función de la métrica utilizada, comparándolo
4 iteración a iteración con los datos de prueba, Usar
mientras que la precisión aumenta. modelo
5
preentrenado
11
12
13
14
def ML():
Evaluar el
1
Crear
Analizar los proceso y Generar el Entrenar el Realizar Enviar los
predicciones
datos preparar modelo modelo inferencias datos
/ resultados
datos
2
3 Una vez entrenado nuestro modelo, es capaz de
admitir datos en la entrada y predecir resultados,
4 dependiendo de qué tan bien esté realizado el Usar
ajuste. modelo
5
preentrenado
8 y_pred2 = modelo.predict(X_valid)
9
10
11 Lo que sale de nuestro modelo es un Array de
12 valores, lo vamos a convertir en un DataFrame y le
vamos a añadir las fechas correspondientes, además
13 de añadirle un nombre a la columna
def ML():
Evaluar el
1
Crear
Analizar los proceso y Generar el Entrenar el Realizar Enviar los
predicciones
datos preparar modelo modelo inferencias datos
/ resultados
datos
2
3 Lo último que haremos, será concatenar con el
comando concat el Dataframe original con nuestras
4 predicciones, para ver si realmente coinciden en Usar
algo. modelo
5
preentrenado
9
10 fig, ax = plt.subplots(figsize=(15,6))
12 ax.set_xlabel('Fecha')
ax.set_ylabel('Cantidad')
ax.set_title('Comparación de valores reales y predicción’)
13
ax.legend()
14 plt.show()
1
2
def ML():
3
4
5
6
7
8
9
10
Éxito!
11
Si bien la predicción no es exacta, es capaz de capturar las dinámicas del sistema, como las repeticiones
12 por temporada u otras influencias o correlaciones que a simple vista no encontramos mirando los datos
crudos.
13
14 Aún tenemos margen para mejorar el modelo, modificando parámetros, seleccionando otro algoritmo, o
utilizando estrategias avanzadas como mapeos y escalados de los datos.