0% encontró este documento útil (0 votos)
3 vistas

Curso Python IA

El documento proporciona una introducción a la programación en Python y sus bibliotecas esenciales para inteligencia artificial, como NumPy y Pandas. Se abordan conceptos básicos de Python, incluyendo variables, tipos de datos, operadores y estructuras de control, así como la instalación y configuración del entorno de desarrollo. Además, se destacan las características y beneficios de utilizar NumPy y Pandas para el análisis y manipulación de datos en proyectos de ciencia de datos.

Cargado por

yayoneitor
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
3 vistas

Curso Python IA

El documento proporciona una introducción a la programación en Python y sus bibliotecas esenciales para inteligencia artificial, como NumPy y Pandas. Se abordan conceptos básicos de Python, incluyendo variables, tipos de datos, operadores y estructuras de control, así como la instalación y configuración del entorno de desarrollo. Además, se destacan las características y beneficios de utilizar NumPy y Pandas para el análisis y manipulación de datos en proyectos de ciencia de datos.

Cargado por

yayoneitor
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 146

Programación de IA con

Python

Ing. Horacio Sagredo


Modulo 1: Introduccion a Python y Librerias para IA

Instalacion y
Configuracion de Python
Instalación y Configuración de Python

Para empezar a trabajar con Python, lo primero que debemos hacer es


descargar e instalar el intérprete de Python, el cual lo podemos
descargar desde la página oficial.
Existen varias versiones del interprete debemos conocer cual es la mejor
versión y estable que podemos utilizar.

 https://www.python.org/
Una vez instalado el intérprete, debemos elegir un editor código, el cual
nos parezca más fácil de trabajar y que sea potente.
Una buena opción para empezar es Visual Studio Code:
 https://code.visualstudio.com/download
Algunas extensiones útiles para VSCode
Python Debugger Material Icon Theme

Supermaven

Intellicode Error Lens

Ahora teniendo todo listo, debemos instalar NumPy


Modulo 1: Introduccion a Python y Librerias para IA

Conceptos Basicos
de Python
Varibales, Operadores y Expresiones
Al ser un lenguaje de alto nivel, Python dispone de los tipos de datos
elementales en cualquier lenguaje de programación, pero además incluye
estructuras de datos más complejas y con altas prestaciones que facilitan en
muchos aspectos la tarea del programador.

Python es un lenguaje de tipado dinámico en el que no hace falta declarar el


tipo de dato que asignará a una variable, de igual manera una variable puede
cambiar de tipo conforme la ejecución del programa, por ello se debe tener
cuidado con la sintaxis para definir cada tipo de dato.

de las tareas
Discusión
Varibales
En Python todo lo que creamos son objetos y las variables son referencias a
esos objetos, las variables se definen por asignación utilizando el signo =, por
ejemplo:
a=5
b = 8.0
nombre = "Catalina"
Piensa el proceso de asignación como la acción de etiquetar las direcciones de
memorias en donde se almacenan los objetos de Python, tal como se
esquematiza en la figura.

de las tareas
Discusión
Tipos de Datos Basicos
Al ser un lenguaje de alto nivel, Python dispone de los tipos de datos
elementales en cualquier lenguaje de programación, pero además incluye
estructuras de datos más complejas y con altas prestaciones que facilitan en
muchos aspectos la tarea del programador.

A continuación, se describen los tipos de datos básicos en Python.

 Enteros (int)
 De coma Flotabte (float)
 Booleanos (bool)

de las tareas
 Cadenas de Caracteres

Discusión
Operadores Aritmeticos
En cualquier lenguaje de programación los operadores aritméticos permiten
realizar las operaciones aritméticas básicas con tipos numéricos, además de que
permiten formar expresiones compuestas. En la tabla se muestran los
operadores aritméticos disponibles en Python y la operación que realizan.

de las tareas
Discusión
Operadores Relacionales
Los operadores relacionales (o de comparación) nos permite efectuar
comparaciones entre objetos de Python. El resultado de una comparación es un
valor booleano True o False.

A continuación se ejemplifican los operadores relacionales que podemos utilizar


en Python:
# "igual que" # "diferente a" # "mayor que" # "menor que"
1 == 1 "a" != "a" 10 > 5 5<1

de las tareas
# "mayor o igual que" # "menor o igual que"

Discusión
30 >= 30 20 <= 10
Operadores Logicos
Los operadores lógicos nos sirven para realizar operaciones de lógica booleana
entre valores de tipo bool.

En Python podemos utilizar los operadores lógicos and, or y not. En la tabla se


muestra la tabla de verdad para los valores lógicos.

de las tareas
Discusión
Estructuras de Control
En un lenguaje de programación, las estructuras de control permiten modificar el
flujo de la ejecución de un conjunto de instrucciones. Se pueden distinguir tres
tipos básicos de control de flujo, a saber:

 Control secuencial
 Control de selección
 Control de repetición

de las tareas
Discusión
Estructuras de Control
Condicional if-elif-else
El condicional if-elif-else es una estructura de control de selección que sirve para
tomar decisiones, basándose en la evaluación de condiciones y/o
comparaciones, en el flujo del programa. La sintaxis más general para if-elif-else

if cond1:
# hacer algo
elif cond2:
# hacer otra cosa
...

de las tareas
elif condn:
# hacer algo más

Discusión
else:
# hacer algo por default
Estructuras de Control
Ciclo for
El bucle for es una estructura de control de repetición, en la cual se conocen a
priori el número de iteraciones a realizar.
En lenguajes como C++ o Java, el ciclo for necesita de una variable de ciclo de
tipo entero que irá incrementándose en cada iteración.
En Python, la cuestión es un poco diferente, el ciclo for recorre una secuencia y
en la k-ésima iteración la variable de ciclo adopta el valor del elemento en la k-
ésima posición del iterable.

for var in secuencia:

de las tareas
# Hacer algo ...

Discusión
numeros = [18,50,90,-20,100,80,37]
for n in numeros:
print(n)
Estructuras de Control
Ciclo while
El ciclo while ejecuta un bloque de instrucciones mientras haya una condición
que se cumpla. La sintaxis de while es:

while cond:
# hacer algo

x=1
while x < 5:

de las tareas
print(x)
x += 1

Discusión
Estructuras de Control
Sentencia try-except
Cuando consideremos que puede ocurrir un error durante la ejecución de nuestro
código, podemos utilizar un bloque try-except para manejar la excepción que
podría surgir.
Básicamente lo que hace es indicarle a Python que intente ejecutar algún código
y le dice qué hacer en el caso de que el código genere un tipo particular de
excepción.
La sintaxis básica de try-except es:
try:
# Código que puede generar una excepción
# Si ocurre una excepción aquí, el control se transfiere al

de las tareas
bloque except
except ExcepciónX:

Discusión
# Código que maneja la excepción de tipo ExcepciónX
a = int(input("Ingrese un número entero: "))
b = int(input("Ingrese otro número entero: "))

try:
c=a/b
except ZeroDivisionError:
print("Estás intentando dividir por cero")
Estructuras de Control
Algunos de los tipos de errores o excepciones más comunes se describen
brevemente a continuación:

 SyntaxError: Ocurre cuando hay un error en la sintaxis del código, como un


paréntesis o una comilla que falta.
 IndentationError: Se produce cuando la indentación del código no es correcta.
 TypeError: Se genera cuando se realiza una operación con un tipo de dato
incompatible.
 ValueError: Se puede producir cuando el valor de un argumento no es válido.
 NameError: Ocurre cuando se intenta usar una variable que no ha sido

de las tareas
definida previamente en el programa.
 IndexError: Se produce cuando se intenta acceder a un elemento de una

Discusión
secuencia con un índice fuera de rango.
 KeyError: Ocurre cuando se intenta acceder a una clave inexistente en un
diccionario.
 FileNotFoundError: Ocurre cuando se intenta abrir un archivo que no existe.
 ImportError: Se produce cuando no se encuentra el módulo que se intenta
importar.
 OSError: Se genera cuando hay un error al realizar una operación del sistema
operativo, como abrir un archivo.
Modulo 1: Introduccion a Python y Librerias para IA

Introduccion a las Librerias


Esenciales: Numpy, Pandas,
Matplotlib
Modulo 1: Introduccion a Python y Librerias para IA

Librería Numpy
Librería NumPy
NumPy es una biblioteca de Python muy popular que se utiliza
principalmente para realizar cálculos matemáticos y científicos.

Ofrece muchas funciones y herramientas que pueden ser útiles para


proyectos de Data Science.

Familiarizarse con NumPy es un paso esencial en un proyecto de


formación en Data Science.

de las tareas
Discusión
Que es NumPy?
El término NumPy es en realidad la abreviatura de «Numerical Python».

Es una biblioteca de código abierto en lenguaje Python.

Se utiliza para la programación científica en Python, y, en particular, para la


programación en Data Science, la ingeniería, las matemáticas o la ciencia.

La Data Science se basa en cálculos científicos muy complejos.


Para realizar estos cálculos, los Data Scientists necesitan herramientas
potentes. Esta biblioteca es muy útil para realizar operaciones matemáticas y

de las tareas
estadísticas en Python. Funciona muy bien para multiplicar matrices o cuadros
multidimensionales. La integración con C/C++ y Fortran es muy sencilla.

Discusión
Que es NumPy?
Incorpora una nueva clase de objetos llamados arrays que permite representar
colecciones de datos de un mismo tipo en varias dimensiones, y funciones muy
eficientes para su manipulación.

La ventaja de Numpy frente a las listas predefinidas en Python es que el


procesamiento de los arrays se realiza mucho más rápido (hasta 50 veces más)
que las listas, lo cual la hace ideal para el procesamiento de vectores y
matrices de grandes dimensiones.

de las tareas
Discusión
Como funciona NumPy?
Esta plataforma incluye objetos multidimensionales en «arrays» y un paquete
que reagrupe herramientas de integración para la implementación en Python.
En términos sencillos, NumPy es una mezcla de C y Python que se utiliza como
alternativa a la programación tradicional en MATLAB.

Los datos, presentados en forma de números, se tratan como arrays (cuadros)


para las funciones multidimensionales y las operaciones de reordenación. Se
trata de una herramienta muy utilizada en el campo de la Data Science.

Es una de las bibliotecas de Python más importantes para el cálculo científico.

de las tareas
Además, otras bibliotecas dependen en gran medida de los arrays NumPy que
utilizan como inputs y outputs (entrada y salida de datos). Por ejemplo,

Discusión
TensorFlow y Scikit aprenden a utilizar arrays NumPy para calcular
multiplicaciones de matrices.

Además, NumPy también proporciona funciones que permiten a los


desarrolladores realizar funciones matemáticas y estadísticas básicas o
avanzadas en arrays y matrices multidimensionales con pocas líneas de
código.
La Clase de objetos array
Un array es una estructura de datos de un mismo tipo organizada en forma de
tabla o cuadrícula de distintas dimensiones.

Las dimensiones de un array también se conocen como ejes.

de las tareas
Discusión
La Clase de objetos array
La estructura de datos «ndarray» o «n-dimensional array» es la funcionalidad
principal de NumPy. Estos cuadros tienen la particularidad de ser homogéneos,
por lo que todos los elementos deben ser del mismo tipo.

Por lo general, los arrays de NumPy son más rápidos que las listas de Python.
Sin embargo, dado que solo es posible almacenar datos del mismo tipo en
cada columna, las listas de Python son más flexibles.

Para utilizar NumPy primero hay que importar la biblioteca, que se utiliza más a
menudo bajo su alias «np», que facilita su uso.

de las tareas
Aquí podemos hacer un ejemplo:

Discusión
import numpy as np

a = np.array([1, 2, 3]) b= np.array([[1, 2, 3], [4, 5, 6]])


print('1D array:') print('2D array:')
print(a) print(b)
Pero por que usamos Numpy en lugar
de las lista de Python
La razón principal es que NumPy ocupa menos memoria que las lista de
Python, además que es más rápido en términos de ejecución.

Pero esto lo podemos revisar con un pequeño código, para que veamos un
versus de cómo trabaja con la asignación de memoria:

import sys
import numpy as np

de las tareas
s = range(1000)

Discusión
print('Resultado lista de Python:')
print(sys.getsizeof(5)*len(s))

d = np.arange(1000)
print('Resultado Numpy array:')
print(d.size*d.itemsize)
Pero por que usamos Numpy en lugar
de las lista de Python
Ahora veamos un versus de la rapidez:

import time
import numpy as np

size = 1000000

l1 = range(size)

de las tareas
l2 = range(size)
start = time.time()
a1 = np.arange(size)

Discusión
result = [(x,y) for x,y in zip(l1,l2)]
a2 = np.arange(size)
print('Resultado lista de Python:')
print((time.time() - start)*1000)

start = time.time()
result = a1 + a2
print('Resultado Numpy array:')
print((time.time() - start)*1000)
Discusión
de las tareas
Modulo 1: Introduccion a Python y Librerias para IA

Librería Pandas
Librería Pandas de Python

Pandas es la herramienta más importante de la que disponen los


científicos y analistas de datos que trabajan en Python hoy en
día.
Las razones son muchas y es que ofrece estructuras de datos
poderosas, expresivas y flexibles que facilitan la manipulación y
análisis de datos.
Aunque las poderosas herramientas de Machine Learning y de
visualización pueden llamar toda la atención, pero Pandas es la
columna vertebral de la mayoría de los proyectos de datos.
Definición
Pandas se deriva del término Panel Data, un término
econométrico para conjuntos de datos que incluyen
observaciones en múltiples períodos de tiempo para los mismos
individuos.
Definición
Es una librería de código abierto de Python que proporciona herramientas de
análisis y manipulación de datos de alto rendimiento utilizando sus potentes
estructuras de datos.

Esta librería se desarrolló debido a la necesidad de tener una herramienta


flexible de alto rendimiento para el análisis de datos. Anteriormente Python se
utilizaba para la manipulación y preparación de datos por lo que no era utilizado
para Machine Learning, Pandas resolvió este problema. Usando esta librería
podemos lograr cinco pasos típicos en el procesamiento y análisis de datos,
independientemente del origen de los datos: cargar, preparar, manipular,
modelar y analizar.
Definición
El DataFrame que es la estructura fundamental de Pandas,
estos son estructuras de datos etiquetados bidimensionales
con columnas de tipos potencialmente diferentes.
Los Pandas DataFrame constan de tres componentes
principales: los datos, el índice y las columnas.

Adicionalmente, con la estructura Pandas DataFrame puedes


especificar los nombres de índice y columna. El índice indica
la diferencia en las filas, mientras que los nombres de las
columnas indican la diferencia en las columnas. Estos
componentes son muy útiles cuando se requiera manipular los
datos.
Definición
Pero con Pandas no solamente puedes manipular los datos, también puedes
limpiarlos, transformarlos y analizarlos.

Por ejemplo, si quieres explorar un conjunto de datos almacenados en un


archivo CSV, con Pandas puedes extraer los datos del archivo y guardarlos en
un DataFrame y luego podrás hacer las siguientes cosas:

 Calcular estadísticas y responder preguntas sobre los datos, como:


 ¿Cuál es el promedio, la media, el máximo o el mínimo de cada
columna?
 La columna A se correlaciona con la columna B?
 ¿Cómo es la distribución de los datos en la columna C?

 Limpiar los datos haciendo cosas como eliminar los valores perdidos y filtrar
las filas o columnas según algunos criterios.

 Almacenar los datos limpios y transformados de nuevo en un CSV, otro


archivo o base de datos.
NumPy vs Pandas
Pandas está construido sobre el paquete NumPy, lo que significa que gran
parte de la estructura de NumPy se utiliza o se replica en Pandas. Pero hay una
gran diferencia entre ambas librerías sobretodo en la forma en que se
almacenan los datos.

Por ejemplo, los datos en NumPy se se almacenan de la siguiente forma:


NumPy vs Pandas
Como puedes observar son arreglos muy parecidos a las matrices en donde no
se tiene las etiquetas de las columnas ni filas, por lo que utilizar en la ciencia
de datos o Machine Learning hace que sea muy difícil.

Por su parte, Pandas estructura los datos de la siguiente forma:


NumPy vs Pandas
Primeramente, tenemos las series, que serían matrices de una sola dimensión
que son capaces de almacenar datos de cualquier tipo, pero acá lo importante
y diferente con NumPy es que tiene un índice para las columnas, las cuales es
asignada directamente por Pandas y que puede ser manipulada por el
programador.
Adicional a esto, la serie puede contener datos homogéneos, de tamaño
inmutable y valores de datos mutables.
Características de Pandas
Entendiendo todo lo explicado hasta ahora podemos hablar sobre las
características principales de la librería Pandas:

 Objeto DataFrame rápido y eficiente con indexación predeterminada y


personalizada.
 Herramientas para cargar datos en objetos de datos en memoria
desde diferentes formatos de archivo.
 Alineación de datos y manejo integrado de datos faltantes.
 Remodelación y giro de conjuntos de fechas.
 Etiquetado, corte, indexación y subconjunto de grandes conjuntos de
datos.
 Las columnas de una estructura de datos se pueden eliminar o
insertar.
 Agrupa por datos para agregación y transformaciones.
 Alto rendimiento de fusión y unión de datos.
 Funcionalidad de la serie de tiempo.
Instalación de Pandas
La instalación estándar de Python no viene con la librería Pandas instalada por
lo que se utilizar el paquete de instalación, pip.

 pip install pandas

Para utilizarla en tus programas de Machine Learning solamente debes


importarla utilizando el alias pd, este es el estándar que se utiliza para esta
librería, como lo es np, para la librería NumPy.

Recuerda que cuando codificas en tu propio entorno de entorno de Machine


Learning no debes olvidar este paso tan importante.

import pandas as pd
Estructura de datos de Pandas
Como lo explicamos previamente, los dos componentes principales de Pandas
son la Serie y el DataFrame.

Comencemos explicando las Series de Pandas, estas son una estructura de


datos unidimensional que puede almacenar valores y para cada valor también
tiene un índice único. Es esencialmente una columna. Para crear una Series
utilizamos la instrucción Series junto a los datos, como se muestra a
continuación:
import pandas as pd
series = pd.Series({"Argentina":"Buenos Aires", "Chile":"Santiago
de Chile", "Colombia":"Bogotá", "Perú":"Lima"})
print('Series:')
print(series)

Acá creamos una Serie con Pandas con 4 números.

Ten en cuenta que el índice de los DataFrame como de las Series, contienen las
claves del diccionario original y están ordenas, por lo que el primer índice
siempre será 0. Por ejemplo, Argentina será el índice en 0, mientras que Perú
será el índice en 3.
Estructura de datos de Pandas
Por su parte, los DataFrames de Pandas son estructuras de datos de dos o más
dimensiones, básicamente una tabla con filas y columnas. Las columnas tienen
nombres y las filas tienen índices. Para crear un DataFrame utilizamos la
instrucción con el mismo nombre junto al conjunto de datos, como se muestra
a continuación:

import pandas as pd
df = pd.DataFrame(np.array([[1, 2, 3], [4, 5, 6]]))
print('DataFrame:')
print(df)
En este ejemplo creamos un DataFrame de tres filas y tres columnas.

Al escribir el código debes tener cuidado con las mayúsculas y minúsculas de


los contrario te devolverá un error al momento de ejecutar el programa.
Estructura de datos de Pandas
Un ejemplo:

import numpy as np
import pandas as pd

datos = np.array([[‘’, ‘Col1’, ‘Col2’], [‘Fila1’, 11, 22], [‘Fila2’, 33, 44]])
print(pd.DataFrame(datos = datos[1:, 1:], index=datos[1:, 0], columns=
datos[0, 1:]))

Aquí utilizamos numpy para pasar a la funcion dataframe de pandas y asi crear
nuestra matriz.
Estructura de datos de Pandas
Otro ejemplo:

import numpy as np
import pandas as pd

df = pd.DataFrame(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]))


print(“Dataframe:”)
print(df)

df. shape => no muestra la estructura de la matriz


len(df.index) => para conocer la altura del dataframe
Algunas instrucciones
df. shape => no muestra la estructura de la matriz
len(df.index) => para conocer la altura del dataframe
df.describe() => estadísticas de resumen para columnas numéricas
df.mean() => para conocer la medida de todas las columnas
df.corr() => para conocer la correlación entre las columnas
df.count() => para conocer el conteo de valores no nulos en un dataframe
df.max() => para conocer el valor mas alto de cada columna
df.min() => para conocer el valor mas bajo de cada columna
df.median() => para conocer la media de cada columna
df.std() => para conocer la desviación estándar de cada columna
Como podemos manipular al
DataFrame
Como podemos manipular al
DataFrame
Como podemos manipular al
DataFrame
Como podemos manipular al
DataFrame
Como podemos manipular al
DataFrame
Como podemos manipular al
DataFrame
Como podemos manipular al
DataFrame
Importar y Exportar datos de un archivo

Visto todos los pasos anteriores, que son básicos en el manejo de datos con
Pandas, veamos cómo podemos implementar esta librería específicamente
para Machine Learning, comenzando por el primer paso que es el de importar
los datos.

Generalmente para obtener los datos de Machine Learning lo vas a hacer de


alguna de las siguientes formas:

 Abrir un archivo local, generalmente un archivo CSV, pero también


podría ser un archivo de texto delimitado, excel, entre otros.

 Abrir un archivo o base de datos de manera remota desde un sitio


web a través de una URL.
Importar y Exportar datos de un archivo
Importar y Exportar datos de un archivo

Para cumplir con estas acciones hay diferentes comandos para cada una de
ellas, pero cuando se abre un archivo se verá de la siguiente manera:

pd.read_tipoarchivo()

Hay diferentes tipos de archivos con los que puede trabajar Pandas, por lo que
se debe reemplazar “tipoarchivo” con el tipo de archivo real, por ejemplo CSV.

Adicionalmente se debe indicar la ruta o el nombre del archivo dentro del


paréntesis. Dentro del paréntesis también se puede pasar diferentes
argumentos relacionados con la forma de abrir el archivo.
Exportar datos de un archivo

Para poder exportar un archivo luego de hacer las manipulaciones de datos,


podemos utilizar el siguiente codigo:

df.to_csv(elarchivo)

Para poder ver las primeras líneas del archivo utilizamos:


df.head() “Donde por defecto es 5, pero podemos especificar”

Para poder ver las ultimas líneas del archivo utilizamos:


df.tail(n=5) “Donde debemos especificar la cantidad de líneas que debemos
ver”

Para poder agregar una nueva columna al DataFrame usamos lo siguiente:


Apodo = [True, True, True, True, True]
df['Apodo'] = Apodo
Exportar datos de un archivo

Otra forma de añadir una columna con datos a nuestro Dataframe:


año = [2018, 2019, 2020, 2021, 2022]
df2 = df.assign(Año=año)

Para añadir una columna a una posición especifica dentro del Dataframe:
Año = ['2020', '2019', '2022', '2015']
df.insert(1, ‘Año’, año)
Modulo 1: Introduccion a Python y Librerias para IA

Librería Matplolib
Definición

Matplotlib es una librería de trazado utilizada para gráficos 2D en lenguaje de


programación Python, es muy flexible y tiene muchos valores predeterminados
incorporados que te ayudarán muchísimo en tú trabajo.

Produce figuras de calidad de publicación en una variedad de formatos


impresos y entornos interactivos. Como tal, no necesitas mucho para
comenzar, solamente tienes que hacer las importaciones necesarias, preparar
algunos datos y con esto puedes comenzar a trazar tu función con la ayuda de
la instrucción plot().

Veamos esto en un ejemplo.

Primero importamos la librería, acá típicamente se le llama plt al momento de


definirla.
Instalación de Matplolib

Para instalar matplotlib es muy simple, aunque puedes utilizar pip en caso de
que lo sepas usar.

Si tienen dudas puede seguir la instalación desde este enlace:

https://matplotlib.org/stable/install/index.html

python -m pip install -U pip


python -m pip install -U matplotlib
Iniciar con Matplolib

Como toda librería de Python lo primero es importarla y definirla en nuestro


programa para ello utilizamos el nombre común que se le da que es plt.

import matplotlib.pyplot as plt


Seguidamente preparamos algunos datos para graficarlos, esto fueron
escogidos al azar.
a = [1, 2, 3, 4]
b = [11, 22, 33, 44]
Y finalmente grafiquemos estos datos utilizando la librería, acá definimos el
color de la línea, así como también el grosor de la misma. De igual forma
incluimos que nos muestre la leyenda de los datos.

plt.plot(a, b, color='blue', linewidth=3, label='línea')


plt.legend()
plt.show()
Iniciar con Matplolib
Al momento de graficar debes tener en cuenta las siguientes consideraciones:

La figura es la ventana o página general en la que se dibuja todo, es el


componente de nivel superior de todos lo que se considerará en los siguientes
puntos. Puedes crear múltiples figuras independientes. Una figura puede tener
otras cosas como por ejemplo un subtítulo, que es un título centrado de la
figura, una leyenda, una barra de color, entre otras.
Iniciar con Matplolib
A la figura le agregas los ejes. Los ejes es el área en la que se grafican los
datos con funciones tales como plot() y scatter() y que pueden tener etiquetas
asociadas. Toma en cuenta que las figuras pueden contener múltiples ejes.

Cada eje tiene un eje x y otro eje y, y cada uno de ellos contiene una
numeración. También existen las etiquetas de los ejes, el título y la leyenda que
se deben tener en cuenta cuando se quieren personalizar los ejes, pero
también teniendo en cuenta que las escalas de los ejes y las líneas de la
cuadrícula pueden ser útiles.
Matplotlib – pyplot - pylab
Cuando se habla de matplotlib hablamos de todo el paquete de visualización
de datos de Python.

Por su parte pyplot, es un módulo en el paquete matplotlib. Es por eso que a


menudo observamos al momento de importar la librería matplotlib.pyplot. El
módulo proporciona una interfaz que permite crear figuras y ejes de forma
implícita y automática para lograr la trama deseada.

Este es especialmente útil cuando desees trazar rápidamente algo sin definir
ninguna figura o eje, como pudimos ver en el ejemplo presentado
anteriormente, en este no se ha especificado explícitamente los componentes,
pero al final se lograron los objetivos que fue el de graficar los datos.
Matplotlib – pyplot - pylab
Por último, tenemos pylab, este es otro modulo que se instala junto al paquete
matplotlib. Se recomienda su uso cuando se trabajaba con matrices, haciendo
matemáticas de forma interactiva y se quiera tener acceso a las funciones de
trazado.

Es posible que todavía veas esta librería en tutoriales más antiguos y ejemplos
de matplotlib, pero ya no se recomienda su uso, con el uso de los nuevos IDE y
kernel que están disponible en la actualidad.
Datos para graficar en Matplotlib
Los datos de Machine Learning para graficar en matplotlib deberán estar
estructurados bajo la librería de NumPy, por lo que es recomendable revisar
esta librería, primeramente.

Cuando estés trabajando con Machine Learning, te encontrarás manipulando


con muchos datos almacenados en matrices, por lo que es normal que uses la
librería de NumPy para procesarlos. Con NumPy podrás realizar operaciones
sobre ellos, inspeccionar sus matrices y manipularlas para que estés
trabajando con el subconjunto de datos adecuado.

Por supuesto, las matrices no son lo único que puedes graficar, también existe
la posibilidad de pasar listas de Python.

Esta es solo una breve introducción a matplotlib, en una próxima entrada


veremos las gráficas que podemos obtener utilizando esta librería de
visualización.
Diagrama de Linea
#Definir los datos
x1 = [3, 4, 5, 6]
Este diagrama fue el que y1 = [5, 6, 3, 4]
graficamos anteriormente, x2 = [2, 5, 8]
y como vimos con tres y2 = [3, 4, 3]
líneas de código puedes
generar un gráfico básico #Configurar las características del gráfico
usando matplotlib. plt.plot(x1, y1, label = 'Línea 1', linewidth = 4, color =
'blue')
Pero adicional a esas tres plt.plot(x2, y2, label = 'Línea 2', linewidth = 4, color =
líneas de código también 'green')
podemos agregar un título
y etiquetas a nuestro #Definir título y nombres de ejes
gráfico para darle más plt.title('Diagrama de Líneas')
significado, inclusive plt.ylabel('Eje Y')
puedes cambiar el ancho y plt.xlabel('Eje X')
el color de las líneas e
incluir una cuadrícula en la #Mostrar leyenda, cuadrícula y figura
figura. plt.legend()
plt.grid()
plt.show()
Grafico de Barras
#Definir los datos
Los gráficos de barras se usan para x1 = [0.25, 1.25, 2.25, 3.25, 4.25]
comparar datos entre diferentes y1 = [10, 55, 80, 32, 40]
categorías, estos se pueden x2 = [0.75, 1.75, 2.75, 3.75, 4.75]
representar horizontal o y2 = [42, 26, 10, 29, 66]
verticalmente. Veamos cómo
podemos implementar este tipo de #Configurar las características del gráfico
gráficos en matplotlib. plt.bar(x1, y1, label = 'Datos 1', width = 0.5, color =
'lightblue')
Como puedes observar en el plt.bar(x2, y2, label = 'Datos 2', width = 0.5, color =
código, la programación es muy 'orange')
parecida a la anterior, definimos los
datos que vamos a graficar y #Definir título y nombres de ejes
configuramos las características del plt.title('Gráfico de barras')
gráfica, acá la diferencia es que en plt.ylabel('Eje Y')
vez de utilizar plt.plot() empleamos plt.xlabel('Eje X')
plt.bar() en donde le especificamos
que vamos a graficar una figura de #Mostrar leyenda y figura
barras. El resto de instrucciones es plt.legend()
exactamente igual. plt.show()
Histogramas
#Definir los datos
Los histogramas se usan para a=
mostrar una distribución, son [22,55,62,45,21,22,34,42,42,4,2,102,95,85,55,110,120,7
útiles cuando tienes matrices o 0,65,55,111,115,80,75,65,54,44,43,42,48]
una lista muy larga. Veamos bins = [0,10,20,30,40,50,60,70,80,90,100]
cómo podemos graficar este
tipo de gráficos. #Configurar las características del gráfico
plt.hist(a, bins, histtype = 'bar', rwidth = 0.8, color =
Para esta gráfica definimos los 'lightgreen')
datos y a su vez un los bins que
vendría siendo los #Definir título y nombres de ejes
compartimientos en donde plt.title('Histograma')
estarán ubicados en nuestra plt.ylabel('Eje Y')
gráfica los datos. A su vez acá plt.xlabel('Eje X')
empleamos la instrucción
plt.hist() para representar esta #Mostrar figura
gráfica y el resto de plt.show()
instrucciones es la misma que
hemos utilizado con
anterioridad.
Gráfico por Dispersión
#Definir los datos
Los gráficos de dispersión se x1 = [0.25, 1.25, 2.25, 3.25, 4.25]
utilizaron para comparar variables, y1 = [10, 55, 80, 32, 40]
por ejemplo, cuánto una variable se x2 = [0.75, 1.75, 2.75, 3.75, 4.75]
ve afectada por otra variable y de y2 = [42, 26, 10, 29, 66]
esta forma se construye una relación
a partir de ella. En esta gráfica los #Configurar las características del gráfico
datos se muestran como una plt.scatter(x1, y1, label = 'Datos 1',color = 'red')
colección de puntos, cada uno con el plt.scatter(x2, y2,label = 'Datos 2', color = 'purple')
valor de una variable que determina
la posición en el eje horizontal y el #Definir título y nombres de ejes
valor de otra variable determina la plt.title('Gráfico de dispersión')
posición en el eje vertical. plt.ylabel('Eje Y')
plt.xlabel('Eje X')
La gráfica se construye utilizando la
instrucción plt.scatter() que significa #Mostrar leyenda y figura
dispersión en inglés, y el resto de las plt.legend()
instrucciones son las mismas que plt.show()
hemos utilizado hasta ahora.
Gráfico por Circular
#Definir los datos
Este es un gráfico circular que dormir =[7,8,6,11,7]
se divide en segmentos, es comer = [2,3,4,3,2]
decir, sectores de pastel, trabajar =[7,8,7,2,2]
básicamente se usa para recreación = [8,5,7,8,13]
mostrar el porcentaje o los datos divisiones = [7,2,2,13]
proporcionales en los que cada actividades = ['Dormir','Comer','Trabajar','Recreación']
porción del pastel representa colores = ['red','purple','blue','orange']
una categoría.
#Configurar las características del gráfico
Igual que en los casos anteriores plt.pie(divisiones, labels=actividades, colors=colores,
el procedimiento es muy startangle=90, shadow=True, explode=(0.1,0,0,0),
parecido, en este caso se utiliza autopct='%1.1f%%')
plt.pie() pero acá se debe
especificar otras características #Definir título
para mejorar la presentación de plt.title('Gráfico circular')
la gráfica.
#Mostrar figura
plt.show()
Primeros Pasos con
TensorFlow
Introduccion
Veremos como TensorFlow puede ayudarnos a conseguir una solución potente
y escalable para resolver problemas complejos de categorización con redes
neuronales de aprendizaje profundo.

Usaremos el lenguaje de programación Python para los ejemplos.

de las tareas
Discusión
Teoría de ML
Vamos a empezar por un poco de teoría. Explicaremos muy por encima algunos
términos
y asuntos que son importantes en el mundo del Machine Learning.

 Machine Learnging o «aprendizaje automático» es una rama de la


Inteligencia Artificial que pretende desarrollar las técnicas necesarias para
que las máquinas aprendan.

 Deep Learning es un término que engloba un conjunto de algoritmos de


aprendizaje profundo. Es un subgrupo de todo lo que abarca ML.

de las tareas
 Redes neuronales son un modelo computacional que intenta imitar el

Discusión
comportamiento de las neuronas de cerebros biológicos. En este modelo se
crean varias capas de neuronas interconectadas con las neuronas de las
capas anteriores y siguientes con unos pesos en los enlaces.
TensorFlow
TensorFlow es una herramienta de machine learning.
Popularizada por su eficiencia con redes neuronales de aprendizaje profundo
pero que permite la ejecución de procesos distribuidos que no tengan nada que
ver con redes neuronales.

de las tareas
Discusión
TensorFlow
Sus Estimators representan un modelo completo y ofrecen los mecanismos
para entrenar los modelos, evaluar su error y generar predicciónes. Son la capa
de más alto nivel.

Te abstraen del entorno donde se ejecutarán ya sea local, un clúster distribuido


con CPUs, GPUs o TPUs.

Existen unos «Estimators» predefinidos que facilitan la construcción de redes


neuronales sencillas:

de las tareas
 tf.estimator.DNNClassifier para modelos de clasificación con redes
profundas.

Discusión
 tf.estimator.DNNLinearCombinedClassifier para clasificación combinada de
modelos lineares y con redes profundas.

 tf.estimator.LinearClassifier para clasificación con modelos lineales.


TensorFlow
Otras APIs de alto nivel importantes son:

 Checkpoints: que permiten almacenar y restaurar el estado de


configuración de la red.

 Feature columns: para facilitar transformaciones de los datos de entrada


mediante intermediarios entre los datos de entrada y los Estimators

 Datasets: herramienta para construir y cargar un input de datos,


manipularlo e introducirlo en tu modelo.

de las tareas
 Layers: ofrece una api de alto nivel para la creación de capas de neuronas

Discusión
facilitando sus interconexiones, funciones de activación, etc.
Instalando y Probando TensorFlow
Lo primero que debemos hacer es instalar TensorFlow. Para ello podemos ver
cómo hacerlo según nuestro SO en:

pip install tensorflow

Con este comando se empezará a descargar todos los paquetes necesarios


para utilizar tensoflow.

de las tareas
Discusión
¿Qué es TensorFlow?
TensorFlow es una librería de código abierto para cálculo numérico, usando
como forma de programación grafos de flujo de datos. Los nodos en el grafo
representan operaciones matemáticas, mientras que las conexiones o links del
grafo representan los conjuntos de datos multidimensionales (tensores) .

Con esta librería somos capaces, entre otras operaciones, de construir y


entrenar redes neuronales para detectar correlaciones y descifrar patrones,
análogos al aprendizaje y razonamiento usados por los humanos.​

Actualmente se utiliza Tensorflow tanto en la investigación como para la

de las tareas
producción de productos de Google, remplazando el rol de su predecesor de
código cerrado, DistBelief.

Discusión
¿Qué es TensorFlow?
TensorFlow es el sistema de aprendizaje automático de segunda generación de
Google Brain, liberado como software de código abierto el 9 de noviembre del
2015.

Mientras la implementación de referencia se ejecuta en dispositivos aislados,


TensorFlow puede correr en múltiple CPUs y GPUs (con extensiones opcionales
de CUDA para informática de propósito general en unidades de procesamiento
gráfico).
TensorFlow está disponible en Linux de 64 bits, macOS, y plataformas móviles
que incluyen Android e iOS.

de las tareas
Los cómputos de TensorFlow están expresados como stateful dataflow graphs.

Discusión
El nombre TensorFlow deriva de las operaciones que las redes neuronales
realizan sobre arrays multidimensionales de datos. Estos arrays
multidimensionales son referidos como "tensores".
Redes Neuronales
¿Qué son las Redes Neuronales?
Las redes neuronales son modelos de computación inspirados en el sistema
nervioso humano, compuestos por capas de nodos o neuronas interconectadas
que procesan información de manera similar a cómo lo hacen las neuronas
biológicas.

Estas redes constan de una capa de entrada, una o varias capas ocultas y una
capa de salida.
Cada neurona recibe entradas de otras, las procesa y transmite una salida a las
neuronas de la siguiente capa.

de las tareas
Durante el entrenamiento, las redes ajustan las ponderaciones de las
conexiones entre las neuronas para mejorar su precisión en la realización de

Discusión
tareas específicas.
¿Qué son las Redes Neuronales?
Las redes neuronales se utilizan en una amplia variedad de aplicaciones,
incluyendo el reconocimiento de imágenes, el procesamiento de lenguaje
natural, la traducción automática, el diagnóstico médico, la predicción
financiera y la previsión de la demanda de energía.

Estas redes son especialmente útiles para resolver problemas complejos que
son difíciles de manejar con algoritmos tradicionales, como el reconocimiento
de imágenes y el procesamiento de lenguaje natural.

Las funciones de activación son un componente esencial de las redes

de las tareas
neuronales, ya que introducen no linealidades en el modelo, permitiendo que
las redes aprendan relaciones y patrones más complejos en los datos.

Discusión
Ejemplos comunes de funciones de activación incluyen la función sigmoide,
ReLU y softmax, cada una adecuada para diferentes casos de uso.
¿Qué son las Redes Neuronales?
Las redes neuronales se clasifican según su arquitectura, métodos de
entrenamiento y usos. Entre los tipos más comunes se encuentran las redes
neuronales prealimentadas, recurrentes (RNN), convolucionales (CNN) y
generativas adversarias (GAN).

Las redes neuronales se han convertido en una herramienta esencial para


muchas empresas y organizaciones, ya que pueden ayudar a automatizar
tareas que solían realizar las personas, como el análisis de datos y el
procesamiento de imágenes.

de las tareas
Discusión
¿Por qué son importantes las redes
neuronales?
Las redes neuronales resultan especialmente adecuadas para llevar a cabo el
reconocimiento de patrones a fin de identificar y clasificar objetos o señales en
sistemas de voz, visión y control. También se pueden emplear para el
modelado y la predicción de series temporales.

Estos son algunos ejemplos de uso de las redes neuronales:

 Las compañías eléctricas pronostican la carga de sus redes con precisión


para garantizar la fiabilidad y optimizar la eficiencia de los generadores

de las tareas
eléctricos que utilizan.
 Los cajeros automáticos pueden aceptar depósitos bancarios de forma

Discusión
fiable mediante la lectura del número de cuenta y del importe del depósito
en un cheque.
 Los patólogos confían en aplicaciones de detección de cáncer como guía a
la hora de clasificar los tumores como benignos o malignos en función de la
uniformidad del tamaño de las células, el grosor de la masa, la mitosis y
otros factores.
¿Cómo funcionan las redes neuronales?

El cerebro humano es lo que inspira la arquitectura de las redes neuronales.

Las células del cerebro humano, llamadas neuronas, forman una red compleja
y con un alto nivel de interconexión y se envían señales eléctricas entre sí para
ayudar a los humanos a procesar la información.

De manera similar, una red neuronal artificial está formada por neuronas
artificiales que trabajan juntas para resolver un problema.

de las tareas
Las neuronas artificiales son módulos de software, llamados nodos, y las redes
neuronales artificiales son programas de software o algoritmos que, en

Discusión
esencia, utilizan sistemas informáticos para resolver cálculos matemáticos.
¿Cómo funcionan las redes neuronales?

Arquitectura de una red neuronal simple


Una red neuronal básica tiene neuronas artificiales interconectadas en tres
capas:

 Capa de entrada
La información del mundo exterior entra en la red neuronal artificial desde la
capa de entrada. Los nodos de entrada procesan los datos, los analizan o los
clasifican y los pasan a la siguiente capa.

de las tareas
 Capa oculta
Las capas ocultas toman su entrada de la capa de entrada o de otras capas

Discusión
ocultas. Las redes neuronales artificiales pueden tener una gran cantidad de
capas ocultas. Cada capa oculta analiza la salida de la capa anterior, la procesa
aún más y la pasa a la siguiente capa.
¿Cómo funcionan las redes neuronales?

 Capa de salida
La capa de salida proporciona el resultado final de todo el procesamiento de
datos que realiza la red neuronal artificial. Puede tener uno o varios nodos. Por
ejemplo, si tenemos un problema de clasificación binaria (sí/no), la capa de
salida tendrá un nodo de salida que dará como resultado 1 o 0. Sin embargo, si
tenemos un problema de clasificación multiclase, la capa de salida puede estar
formada por más de un nodo de salida.

de las tareas
Discusión
¿Cómo funcionan las redes neuronales?

Arquitectura de una red neuronal profunda

Las redes neuronales profundas, o redes de aprendizaje profundo, tienen varias


capas ocultas con millones de neuronas artificiales conectadas entre sí. Un
número, denominado peso, representa las conexiones entre un nodo y otro. El
peso es un número positivo si un nodo estimula a otro, o negativo si un nodo
suprime a otro. Los nodos con valores de peso más altos tienen mayor
influencia en los demás nodos.

de las tareas
En teoría, las redes neuronales profundas pueden asignar cualquier tipo de
entrada a cualquier tipo de salida. Sin embargo, también necesitan mucho más

Discusión
entrenamiento en comparación con otros métodos de machine learning.
Necesitan millones de ejemplos de datos de entrenamiento en lugar de los
cientos o miles que podría necesitar una red más simple.
¿Cómo funcionan las redes neuronales?

de las tareas
Discusión
Modulo 1: Introduccion a Python y Librerias para IA

Creemos una Red


Neuronal
Un Ejemplo Basico
Un Ejemplo Basico
Un Ejemplo Basico
Un Ejemplo Basico
Un Ejemplo Basico
Un Ejemplo Basico
Un Ejemplo Basico
Un Ejemplo Basico
Un Ejemplo Basico
Un Ejemplo Basico
Redes Convolucionales
¿Qué son las redes neuronales convolucionales?

Las redes neuronales convolucionales utilizan datos tridimensionales para


tareas de clasificación de imágenes y reconocimiento de objetos.

Las redes neuronales convolucionales (CNN) son un tipo de algoritmo de


aprendizaje profundo que se utiliza para identificar objetos en imágenes. Se
inspiran en la estructura de la corteza visual humana.

Características
 Son un subconjunto del machine learning y el núcleo de los algoritmos de
deep learning.
 Están formadas por nodos interconectados que reciben información, la
procesan y la pasan a través de otra neurona artificial.
 Son particularmente útiles para identificar patrones en imágenes.
 Se pueden utilizar para clasificar imágenes, detectar objetos y segmentar
imágenes.
¿Qué son las redes neuronales convolucionales?

Aplicaciones
 Diagnóstico médico, como interpretar imágenes médicas, como
radiografías, resonancias magnéticas y tomografías.
 Procesamiento de lenguaje natural.
 Análisis de series temporales.
 Reconocimiento del habla.

Estructura Capas convolucionales, Unidad lineal rectificada (ReLU), Capas de


agrupamiento, Capas totalmente conectadas.

Entrenamiento
La red aprende de forma automática a ajustar iterativamente los coeficientes
para detectar características cada vez más complejas.
¿Cómo funcionan las redes neuronales
convolucionales?
Las redes neuronales convolucionales se distinguen de otras redes neuronales
por su rendimiento superior con entradas de señal de imagen, voz o audio. Se
componen de tres tipos principales de capas:

 Capa convolucional
 Capa de agrupación
 Capa totalmente conectada

La capa convolucional es la primera capa de una red convolucional. Si bien las


capas convolucionales pueden ir seguidas de otras capas convolucionales o de
capas de agrupación, la capa final es la capa totalmente conectada. Con cada
capa, la CNN aumenta su complejidad, identificando mayores porciones de la
imagen.
Las primeras capas se centran en características simples, como colores y
bordes. A medida que los datos de la imagen avanzan a través de las capas, la
CNN comienza a reconocer elementos o formas más grandes hasta que
finalmente identifica el objeto esperado.
Capa Convolucional
La capa convolucional es el bloque de creación principal de una CNN y es
donde se realizan la mayoría de los cálculos.
Requiere algunos componentes, como los datos de entrada, un filtro y un mapa
de características. Supongamos que la entrada es una imagen en color
compuesta por una matriz de píxeles en 3D.
Esto significa que la entrada tendrá tres dimensiones: altura, anchura y
profundidad, que corresponden a la composición RGB en una imagen. También
hay un detector de características, conocido como kernel o filtro, que se mueve
por los campos receptivos de la imagen para comprobar si la característica
está presente. Este proceso se denomina convolución.
Ejemplo de una Red Densa
Ejemplo de una Red Densa
Ejemplo de una Red Densa
Ejemplo de una Red Densa
Ejemplo de una Red Densa
Ejemplo de una Red Densa
Ejemplo de una Red Densa

https://playground.tensorflow.org/
Ejemplo de una Red Densa
Ejemplo de una Red Densa
Ejemplo de una Red Densa
Ejemplo de una Red Densa
Funciones
Función ReLU
La función de activación ReLU (Unidad Lineal Rectificada) es una función que se
utiliza en redes neuronales para introducir no linealidad. Es una de las
funciones de activación más populares y utilizadas.
Cómo funciona:
 Si la entrada es positiva, la función ReLU emite directamente la entrada.
 Si la entrada es negativa, la función ReLU emite cero.

Función Sigmoid
La función sigmoide se utiliza comúnmente en las redes neuronales como una
función de activación para las capas ocultas. Esta función toma un valor de
entrada y lo comprime en un rango comprendido entre 0 y 1, lo que la
convierte en una función útil para modelar probabilidades y realizar
clasificaciones binarias. La función sigmoide tiene una forma característica de
«S» que le da su nombre.
Red Convolucional
La clave dentro de una red convolucional es encontrar las características bien
específicas, de esta manera podemos predecir a que se refiere la imagen.
Red Convolucional
La clave dentro de una red convolucional es encontrar las características bien
específicas, de esta manera podemos predecir a que se refiere la imagen.
Red Convolucional
La clave dentro de una red convolucional es encontrar las características bien
específicas, de esta manera podemos predecir a que se refiere la imagen.
Red Convolucional
La clave dentro de una red convolucional es encontrar las características bien
específicas, de esta manera podemos predecir a que se refiere la imagen.
Técnicas de regularización para
redes neuronales: optimiza tus
modelos de aprendizaje profundo
Técnicas de Regularizacion
La regularización en redes neuronales es fundamental para evitar el
sobreajuste y mejorar la generalización de los modelos.

Existen diversas técnicas de regularización, como la regularización L1 y L2, el


decaimiento de pesos, el dropout, la normalización por lotes, el aumento de
datos y la parada temprana.

Estas técnicas ayudan a controlar la complejidad del modelo y a optimizar el


rendimiento en datos nuevos. En este artículo, exploraremos en detalle estas
técnicas y cómo implementarlas adecuadamente en una red neuronal.

de las tareas
Discusión
Que es la Regularizacion ?
“La regularización en las redes neuronales es un conjunto de técnicas
utilizadas para prevenir el sobreajuste y mejorar la capacidad de
generalización del modelo.”

Las redes neuronales son poderosas herramientas para el análisis de datos y la


toma de decisiones, pero suelen ajustarse demasiado a los datos de
entrenamiento, lo que puede llevar a un rendimiento deficiente en nuevos
datos.

de las tareas
Discusión
Redes neuronales y sobreajuste
Las redes neuronales tienen la capacidad de aprender patrones complejos en
los datos de entrenamiento, lo que les permite ajustarse y abordar problemas
difíciles.

Sin embargo, cuando las redes neuronales se sobreajustan, se vuelven


demasiado especializadas en los datos específicos de entrenamiento y pierden
la capacidad de generalizar a datos nuevos.

El sobreajuste se produce cuando el modelo captura características


irrelevantes o ruido del conjunto de entrenamiento, en lugar de aprender los

de las tareas
patrones fundamentales y generalizables.

Discusión
Esto puede llevar a una mala capacidad predictiva del modelo en datos nuevos
y no vistos durante el entrenamiento.
Importancia de la regularización en
redes neuronales
La regularización es crucial para controlar el sobreajuste en las redes
neuronales. Al aplicar técnicas de regularización, se controla la complejidad del
modelo y se evita que los pesos y parámetros se vuelvan demasiado grandes o
especializados en los datos de entrenamiento.

Esto permite que la red neuronal generalize mejor y mejore el rendimiento en


datos nuevos y no vistos.

de las tareas
La regularización también proporciona una forma de lidiar con la alta
dimensionalidad y complejidad de los modelos de aprendizaje profundo.

Discusión
Al reducir la complejidad del modelo, las técnicas de regularización ayudan a
evitar el sobreajuste y mejoran la capacidad de generalización.
Técnicas de regularización para redes
neuronales
Aqui, nos centraremos en las diferentes técnicas de regularización que se
emplean en las redes neuronales con el objetivo de controlar el sobreajuste y
mejorar la capacidad de generalización.

Estas técnicas proporcionan formas efectivas de controlar la complejidad del


modelo y optimizar el rendimiento en datos nuevos y no vistos durante el
entrenamiento.

de las tareas
Discusión
Regularización L1 y L2
La regularización L1 y L2 son técnicas populares para controlar los pesos de los
parámetros en una red neuronal.

 En la regularización L1, se agrega un término de penalización


proporcional a la suma de los valores absolutos de los pesos. Esto
promueve la dispersión de los pesos y puede llevar a que algunos se
vuelvan cero, ignorando así algunas características de entrada en el
modelo.

 Por otro lado, en la regularización L2, el término de penalización es

de las tareas
proporcional a la suma de los valores al cuadrado de los pesos. Esta
técnica ayuda a reducir los pesos más grandes y fomenta el uso de

Discusión
todos los pesos en menor medida, logrando una mejor generalización.
Decaimiento de pesos (Weight Decay)

El decaimiento de pesos es una técnica de regularización que busca reducir el


tamaño de los pesos del modelo.

Esto se logra al agregar un término de penalización relacionado con la suma de


los cuadrados de los pesos a la función de coste. Al penalizar los pesos más
grandes, se reduce la complejidad del modelo y se evita el sobreajuste.

de las tareas
Discusión
Dropout
El dropout es una técnica de regularización que apaga aleatoriamente un
porcentaje de neuronas durante el entrenamiento de la red neuronal.

Esta estrategia evita que el modelo se vuelva dependiente de un conjunto


específico de características al hacer que cada neurona tenga que aprender de
manera más independiente.

Así, se previene el sobreajuste y se promueve una mejor generalización del


modelo.

de las tareas
Discusión
Normalización por lotes (Batch
Normalization)
La normalización por lotes es una técnica de regularización que normaliza las
activaciones de salida en cada capa oculta de la red.

Esto se logra utilizando la media y la varianza del lote actual durante el


entrenamiento. La normalización por lotes ayuda a estabilizar la distribución de
las activaciones y acelera el proceso de entrenamiento.

También reduce la dependencia en la inicialización de los pesos y facilita el uso


de tasas de aprendizaje más altas.

de las tareas
Discusión
Aumento de datos (Data Augmentation)

El aumento de datos es una técnica de regularización que consiste en aplicar


transformaciones aleatorias a los datos de entrenamiento para crear nuevas
muestras.

Estas transformaciones pueden incluir rotaciones, traslaciones, reflejos,


recortes, entre otras. El aumento de datos aumenta la cantidad de datos
disponibles para el entrenamiento, lo que ayuda al modelo a generalizar mejor
y evita el sobreajuste.

de las tareas
Discusión
Parada temprana (Early Stopping)

La parada temprana es una técnica de regularización que se basa en el


seguimiento del error de validación durante el entrenamiento.

Cuando el error de validación comienza a aumentar de manera sostenida, se


detiene el entrenamiento para evitar el sobreajuste.

Esta técnica ayuda a encontrar el punto óptimo en el que el modelo no ha


perdido su capacidad de generalización y mejora el rendimiento en datos
nuevos.

de las tareas
Discusión
Cómo implementar las técnicas de
regularización
Para implementar eficazmente las técnicas de regularización en redes
neuronales, es necesario considerar varios aspectos clave que afectan tanto a
la elección de la técnica adecuada como a su impacto en la arquitectura de la
red neuronal y las consideraciones durante el entrenamiento.

de las tareas
Discusión
Cómo implementar las técnicas de
regularización
Para implementar eficazmente las técnicas de regularización en redes
neuronales, es necesario considerar varios aspectos clave que afectan tanto a
la elección de la técnica adecuada como a su impacto en la arquitectura de la
red neuronal y las consideraciones durante el entrenamiento.

de las tareas
Discusión
Elección de la técnica adecuada

No existe una técnica de regularización universalmente superior, por lo que la


elección de la técnica adecuada dependerá de las características y objetivos
específicos de cada proyecto.

Algunos factores a tener en cuenta incluyen el tamaño del conjunto de


datos, la arquitectura de la red neuronal, la cantidad de parámetros y
la cantidad de ruido presente en los datos.

Es importante comprender las características únicas de cada técnica de

de las tareas
regularización y cómo se adaptan a las necesidades del proyecto.

Discusión
Ventajas y desventajas de las
técnicas de regularización
Ventajas y de las técnicas de
regularización
Las técnicas de regularización en redes neuronales ofrecen varias ventajas
importantes:

 Reducción del sobreajuste: La regularización ayuda a prevenir el


sobreajuste, lo que implica que los modelos se ajusten demasiado a los
datos de entrenamiento y pierdan la capacidad de generalizar a nuevos
datos. Esto mejora la capacidad de generalización del modelo y su
rendimiento en datos no vistos.

de las tareas
 Control de la complejidad del modelo: Las técnicas de regularización
permiten controlar la complejidad del modelo al limitar los valores de

Discusión
los pesos de los parámetros. Esto evita que los pesos se vuelvan
demasiado grandes y ayuda a evitar el problema del estallido del
gradiente y la inestabilidad durante el entrenamiento.
Ventajas y de las técnicas de
regularización
 Mejora del tiempo de convergencia: Al reducir la complejidad del
modelo, las técnicas de regularización pueden acelerar el proceso de
convergencia durante el entrenamiento. Esto se debe a que se facilita
el aprendizaje de pesos óptimos y se reduce la dependencia en la
inicialización de los pesos.

 Aumento en la capacidad de generalización: La regularización ayuda a


mejorar la capacidad de generalización del modelo, lo que implica que
es capaz de hacer predicciones precisas en datos que no ha visto

de las tareas
previamente. Esto es especialmente útil en situaciones donde el
conjunto de datos es limitado o ruidoso.

Discusión
Desventajas y de las técnicas de
regularización
A pesar de las ventajas, las técnicas de regularización en redes neuronales
también presentan algunas desventajas a considerar:

 Mayor complejidad computacional: Al agregar términos de penalización


o implementar estrategias como el dropout o la normalización por
lotes, se requiere de un mayor poder computacional durante el
entrenamiento de los modelos. Esto puede aumentar el tiempo de
entrenamiento y el costo computacional.

de las tareas
Discusión
Desventajas y de las técnicas de
regularización
 Elección de hiperparámetros: Las técnicas de regularización en redes
neuronales suelen requerir la elección de hiperparámetros, como los
coeficientes de regularización o los porcentajes de apagado en el
dropout. La selección incorrecta de estos hiperparámetros puede
afectar el rendimiento y la eficacia de la regularización.

 Posible pérdida de información: Al regularizar un modelo, es posible


que se produzca una pérdida parcial de información. Por ejemplo, en
el caso de la regularización L1, algunos pesos pueden volverse cero,

de las tareas
lo que significa que algunas características de entrada pueden ser
ignoradas por el modelo.

Discusión

También podría gustarte