[go: up one dir, main page]

0% encontró este documento útil (0 votos)
20 vistas39 páginas

Explorador M1

El documento presenta una introducción a la inteligencia artificial (IA), abarcando su evolución histórica, conceptos básicos, diferencias entre IA, aprendizaje automático y aprendizaje profundo, así como sus aplicaciones en la vida cotidiana y consideraciones éticas. Se destaca el uso de Python como el lenguaje preferido para el desarrollo de IA, junto con herramientas y bibliotecas clave como NumPy, Pandas y Scikit-Learn. Además, se mencionan actividades para profundizar en la comprensión de la IA y sus implicaciones en diversos sectores.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
20 vistas39 páginas

Explorador M1

El documento presenta una introducción a la inteligencia artificial (IA), abarcando su evolución histórica, conceptos básicos, diferencias entre IA, aprendizaje automático y aprendizaje profundo, así como sus aplicaciones en la vida cotidiana y consideraciones éticas. Se destaca el uso de Python como el lenguaje preferido para el desarrollo de IA, junto con herramientas y bibliotecas clave como NumPy, Pandas y Scikit-Learn. Además, se mencionan actividades para profundizar en la comprensión de la IA y sus implicaciones en diversos sectores.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 39

BOOTCAMP INTELIGENCIA

ARTIFICIAL
Nivel Explorador
MISIÓN 1
BOOTCAMP INTELIGENCIA ARTIFICIAL
Nivel Explorador
Semana 1
Introducción a la Inteligencia Artificial

Introducción
La inteligencia artificial (IA) ha capturado la atención mundial en las últimas décadas debido a sus
numerosas aplicaciones en diversos campos, como la medicina, la industria, el entretenimiento y la
educación. Esta disciplina se refiere a la capacidad de los sistemas informáticos para realizar tareas
que normalmente requieren inteligencia humana, como el aprendizaje, la percepción, la toma de
decisiones y la resolución de problemas (Caparrini, 2018).

Históricamente, la IA ha evolucionado desde los primeros experimentos en los años 50 hasta los
avances más recientes en áreas como el aprendizaje automático (machine learning) y el
procesamiento del lenguaje natural (García et al., 2020). Estas innovaciones han transformado la
manera en que interactuamos con la tecnología, permitiendo que los sistemas sean más autónomos
y eficientes.

Este documento explorará los conceptos básicos y la evolución histórica de la inteligencia artificial.
Abordaremos las diferencias clave entre la IA, el aprendizaje automático y el aprendizaje profundo
(deep learning), y examinaremos diversas aplicaciones de la IA en la vida cotidiana, desde la
medicina hasta el entretenimiento (Hernández & Prats, 2022).

Para comprender mejor la IA, es crucial reconocer sus implicaciones sociales y éticas. A medida que
los sistemas de IA se integran más en nuestra vida diaria, es necesario enfrentar desafíos como la
transparencia, la privacidad de los datos y la equidad. Estos temas se discutirán en profundidad en
las secciones posteriores (Rani, 2020).
Conceptos Básicos y Evolución Histórica de la IA
La inteligencia artificial se originó en la década de 1950 cuando investigadores como Alan Turing,
John McCarthy y Marvin Minsky comenzaron a explorar la posibilidad de crear máquinas con
capacidades cognitivas similares a las humanas. Este período inicial fue marcado por optimismo,
pero también por desafíos significativos, lo que llevó a períodos de escepticismo conocidos como
"invernadas de la IA" (Caparrini, 2018).

A pesar de estos altibajos, la IA ha avanzado considerablemente gracias a los desarrollos en


informática, neurociencia y psicología. Hoy en día, la IA es una tecnología clave en aplicaciones que
van desde la robótica hasta el procesamiento del lenguaje natural (García et al., 2020).

Un ejemplo de la evolución de la IA es el desarrollo de los sistemas expertos en la década de 1980,


que eran capaces de replicar el conocimiento humano en áreas específicas. Estos sistemas sentaron
las bases para las técnicas modernas de IA que utilizan aprendizaje automático y aprendizaje
profundo para mejorar su rendimiento y adaptabilidad (Hernández & Prats, 2022).

El aprendizaje automático ha permitido que las máquinas analicen grandes volúmenes de datos y
extraigan patrones significativos, lo que ha impulsado innovaciones en muchos sectores. Por
ejemplo, las redes neuronales artificiales han sido esenciales en la evolución de la IA, permitiendo
avances significativos en la capacidad de las máquinas para procesar información de manera similar
al cerebro humano (Rani, 2020).

Ejemplo de Código:
Considera el siguiente script que utiliza una red neuronal básica para clasificar imágenes:

import tensorflow as tf

from tensorflow.keras import layers, models

# Cargar y preprocesar datos

(train_images, train_labels), (test_images, test_labels) = tf.keras.datasets.mnist.load_data()

train_images = train_images.reshape((60000, 28, 28, 1)).astype('float32') / 255

test_images = test_images.reshape((10000, 28, 28, 1)).astype('float32') / 255

# Construir el modelo de red neuronal

model = models.Sequential()

model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))

model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))

model.add(layers.MaxPooling2D((2, 2)))

model.add(layers.Flatten())

model.add(layers.Dense(64, activation='relu'))

model.add(layers.Dense(10, activation='softmax'))

# Compilar el modelo

model.compile(optimizer='adam',

loss='sparse_categorical_crossentropy',

metrics=['accuracy'])

# Entrenar el modelo

model.fit(train_images, train_labels, epochs=5, batch_size=64, validation_data=(test_images,


test_labels))

Diferencias entre IA, Machine Learning y Deep Learning


La inteligencia artificial, el aprendizaje automático y el aprendizaje profundo están estrechamente
relacionados pero presentan diferencias significativas. La inteligencia artificial es un campo amplio
que abarca el desarrollo de máquinas capaces de imitar la inteligencia humana. En contraste, el
aprendizaje automático se centra en la creación de algoritmos que pueden aprender y mejorar a
partir de la experiencia, utilizando grandes cantidades de datos para identificar patrones y hacer
predicciones (Barakat et al., 2021).

El aprendizaje profundo, por su parte, es una técnica avanzada de aprendizaje automático que
emplea redes neuronales artificiales para procesar datos de manera más similar al cerebro humano.
Estas redes pueden aprender características complejas a partir de los datos, lo que les permite
resolver problemas de manera más eficiente y precisa (Yun et al., 2022).

Ejemplo de Código:
Aquí tienes un ejemplo de un algoritmo de aprendizaje automático que clasifica datos utilizando
un árbol de decisión:

from sklearn.datasets import load_iris

from sklearn.tree import DecisionTreeClassifier

from sklearn.model_selection import train_test_split


from sklearn.metrics import accuracy_score

# Cargar el conjunto de datos Iris

iris = load_iris()

X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.3,


random_state=42)

# Entrenar un árbol de decisión

clf = DecisionTreeClassifier()

clf.fit(X_train, y_train)

# Predecir y evaluar el modelo

y_pred = clf.predict(X_test)

accuracy = accuracy_score(y_test, y_pred)

print(f'Accuracy: {accuracy * 100:.2f}%')

Aplicaciones de la IA en la Vida Cotidiana


La inteligencia artificial ha encontrado numerosas aplicaciones prácticas en nuestra vida cotidiana.
Por ejemplo, el reconocimiento facial en los teléfonos móviles permite desbloquear dispositivos de
manera rápida y segura. Los asistentes de voz como Siri o Alexa ayudan a realizar tareas sencillas,
como programar recordatorios y buscar información (García et al., 2020).

En el ámbito de la salud, la IA se utiliza para el diagnóstico precoz de enfermedades, permitiendo


una detección temprana y un tratamiento más efectivo. También desempeña un papel crucial en el
desarrollo de nuevos fármacos y en la personalización de tratamientos según las necesidades de
cada paciente (Hernández & Prats, 2022).

En el sector financiero, la IA se emplea en la detección de fraudes, el asesoramiento financiero


personalizado y la gestión de carteras de inversión. Además, se utiliza en el análisis de mercados y
la toma de decisiones de inversión, ayudando a los profesionales a identificar oportunidades y
minimizar riesgos (Caparrini, 2018).
En el comercio electrónico, la IA se aplica en la recomendación de productos, la optimización de
precios y la detección de patrones de comportamiento de los clientes para mejorar la experiencia
del usuario (Rani, 2020).

Consideraciones Éticas en el Uso de IA


A medida que la inteligencia artificial se integra cada vez más en nuestra vida diaria, surgen
importantes consideraciones éticas en torno a su uso. La transparencia y la rendición de cuentas
son cruciales, ya que los sistemas de IA a menudo operan como cajas negras cuyos procesos de toma
de decisiones pueden ser opacos (García et al., 2020). Es esencial que los desarrolladores trabajen
para garantizar que estos sistemas sean lo más transparentes y explicables posible, permitiendo a
los usuarios comprender cómo se toman las decisiones y responsabilizar a los sistemas por sus
acciones.

La privacidad y la protección de datos personales son otras áreas de preocupación, ya que los
sistemas de IA requieren grandes volúmenes de información para funcionar. Esto plantea serios
desafíos de privacidad, ya que las tecnologías pueden recopilar, almacenar y procesar información
sensible sobre los individuos (Hernández & Prats, 2022). Las políticas sólidas de privacidad y
seguridad de datos son esenciales para proteger los derechos y la autonomía de las personas.

Además, existe el riesgo de que la IA perpetúe y amplifique sesgos humanos presentes en los datos
de entrenamiento, lo que podría resultar en decisiones discriminatorias y resultados injustos
(Caparrini, 2018). Los desarrolladores de IA deben abordar proactivamente estos problemas de
sesgo y equidad para evitar consecuencias negativas.

Finalmente, la cuestión de la responsabilidad en caso de accidentes o errores causados por sistemas


de IA es un tema relevante. Es importante establecer marcos legales y normativos claros que
aborden la atribución de responsabilidad, permitiendo que las víctimas reclamen indemnizaciones
y que los desarrolladores de IA asuman las consecuencias de sus acciones (Barakat et al., 2021). La
implementación de mecanismos de supervisión y rendición de cuentas garantizará un desarrollo y
uso responsable y seguro de la IA.
Actividad: Comprender la Introducción a la IA
Objetivo: Familiarizarse con los conceptos fundamentales de la inteligencia artificial y sus
aplicaciones.

Instrucciones:

1. Lea la sección de introducción cuidadosamente.

2. Enumere tres aplicaciones actuales de la IA que considere más innovadoras.

3. Discuta en grupo las implicaciones éticas de una aplicación específica de IA.

Actividad: Exploración Histórica de la IA


Objetivo: Analizar la evolución de la IA a lo largo del tiempo.

Instrucciones:

1. Realice una línea de tiempo de los hitos más importantes en la historia de la IA.

2. Investigue cómo las técnicas modernas de IA han mejorado la eficiencia en comparación


con las primeras aproximaciones.

3. Describa un caso de uso de IA que considere revolucionario y explique por qué.

Actividad: Comparación de Técnicas de IA


Objetivo: Diferenciar entre inteligencia artificial, aprendizaje automático y aprendizaje profundo.

Instrucciones:

1. Lea y resuma las diferencias clave entre IA, aprendizaje automático y aprendizaje
profundo.

2. Elabore un cuadro comparativo que ilustre las características y aplicaciones de cada


enfoque.

3. Discuta en grupo cómo estos enfoques pueden aplicarse a un problema específico en su


industria.
Actividad: Identificación de Aplicaciones de IA
Objetivo: Explorar las aplicaciones de la IA en diversos sectores.

Instrucciones:

1. Seleccione un sector específico y describa cómo se utiliza la IA en ese campo.

2. Identifique dos tecnologías de IA utilizadas en ese sector y explique su función.

3. Prepare una presentación breve sobre las ventajas y desafíos del uso de IA en el sector
elegido.

Actividad: Evaluación de Consideraciones Éticas


Objetivo: Analizar los desafíos éticos asociados con la implementación de sistemas de IA.

Instrucciones:

1. Investigue un caso reciente donde el uso de IA haya planteado preocupaciones éticas.

2. Discuta las medidas que se podrían tomar para mitigar estos desafíos éticos.

3. Proponga un conjunto de directrices éticas para el desarrollo responsable de IA en su


industria.

Referencias
● Barakat, Y., Bourekkadi, S., Khoulji, S., & Kerkeb, M. L. (2021). What contributions of Artificial Intelligence in
Innovation?. EDP Sciences, 234, 00105-00105. https://doi.org/10.1051/e3sconf/202123400105

● Caparrini, F. S. (2018). Breve historia de la inteligencia artificial. Fundación José Ortega y Gasset, 19-33.
https://dialnet.unirioja.es/servlet/articulo?codigo=6503791

● García, J. D. R., Moreno-León, J., González, M. R., & Robles, G. (2020). LearningML: A Tool to Foster
Computational Thinking Skills Through Practical Artificial Intelligence Projects. University of Murcia, 20(63).
https://doi.org/10.6018/red.410121

● Hernández, F. S., & Prats, G. M. (2022). Aportes de ingeniería en inteligencia artificial aplicada en la educación.
Área de Innovación y Desarrollo S.L., 11(1), 133-143. https://doi.org/10.17993/3ctic.2022.111.133-143

● Rani, P. (2020). A Comprehensive Survey of Artificial Intelligence (AI): Principles Techniques and Applications.
Karadeniz Technical University, 11(3), 1990-2000. https://doi.org/10.17762/turcomat.v11i3.13596

● Yun, L., Jiao, H., & Lu, K. (2022). Tourist Attraction Recommendation Method Based on Megadata and Artificial
Intelligence Algorithm. Wiley, 2022, 1-8. https://doi.org/10.1155/2022/4461165
BOOTCAMP INTELIGENCIA ARTIFICIAL
Nivel Explorador
Semana 2
Herramientas y Entornos de Desarrollo para IA
Introducción

La inteligencia artificial (IA) ha emergido como una de las tecnologías más innovadoras y de rápido
avance, aplicándose en diversas áreas, desde el reconocimiento de imágenes hasta la conducción
autónoma de vehículos. Este auge tecnológico exige a los desarrolladores el uso de una amplia gama
de herramientas y entornos de programación para crear, entrenar y desplegar modelos de
aprendizaje automático eficientemente (González, 2023).

El lenguaje de programación Python se ha posicionado como el favorito para el desarrollo de


aplicaciones de IA, gracias a su simplicidad, flexibilidad y a una extensa colección de bibliotecas y
frameworks de aprendizaje automático (Caparrini, 2018). Además, la activa comunidad de
desarrolladores de Python contribuye constantemente con nuevas herramientas y recursos,
enriqueciendo aún más su ecosistema (García et al., 2020).

A pesar de la predominancia de Python, otros lenguajes como R, Java y C++ también son utilizados
en el ámbito de la IA. La elección del lenguaje ideal depende de los requerimientos específicos del
proyecto, la experiencia del equipo y las preferencias individuales.

En este documento, exploraremos las herramientas y entornos de desarrollo más prominentes en


el campo de la inteligencia artificial, centrándonos en Python y sus bibliotecas más significativas.

Herramientas y Lenguajes Básicos para IA

Seleccionar las herramientas y lenguajes adecuados es crucial para el éxito de un proyecto de IA.
Python se ha consolidado como uno de los lenguajes de programación más populares para
implementar aplicaciones de IA debido a su facilidad de uso y su capacidad para manejar grandes
volúmenes de datos (Rosas, 2023).
Características Clave de Python para IA:

1. Sintaxis Clara y Legible: La sintaxis de Python es sencilla y concisa, lo que facilita su


aprendizaje y uso, incluso para programadores principiantes (Sodhi et al., 2019).

2. Biblioteca Amplia de Paquetes y Módulos: Python cuenta con una variedad de bibliotecas
y frameworks diseñados para el desarrollo de aplicaciones de IA, como NumPy, Pandas, y
Scikit-Learn (Sodhi et al., 2019).

3. Integración con Otros Lenguajes: Python puede integrarse fácilmente con otros lenguajes
de programación, permitiendo a los desarrolladores aprovechar sus fortalezas específicas
(Mosquera et al., 2021).

Lenguajes Alternativos en IA:

Además de Python, lenguajes como R, Java y C++ ofrecen características únicas que pueden ser
ventajosas dependiendo del proyecto. La elección del lenguaje adecuado dependerá de los
requisitos del proyecto y de la experiencia del equipo de desarrollo.

Manejo de Bibliotecas de IA en Python

Una vez que se ha seleccionado Python como el lenguaje de programación, es fundamental


familiarizarse con sus principales bibliotecas y frameworks. Algunas de las más destacadas incluyen:

• NumPy: Proporciona soporte para matrices y arrays multidimensionales, así como


funciones matemáticas de alto nivel.

• Pandas: Facilita la manipulación y el análisis de datos, permitiendo operaciones de limpieza,


transformación y análisis estadístico.

• Scikit-Learn: Ofrece algoritmos de clasificación, regresión y agrupación, además de


herramientas para la evaluación y validación de modelos (Shenouda & Bajwa, 2021).

Estas bibliotecas permiten a los desarrolladores realizar tareas cruciales como la carga y
procesamiento de datos, la selección y entrenamiento de modelos, y la evaluación y optimización
de los mismos.

Configuración de Entornos de Desarrollo en Python

Una adecuada configuración del entorno de desarrollo es esencial para la creación de aplicaciones
de IA en Python. Esto incluye la instalación y gestión de bibliotecas y dependencias necesarias, así
como la creación de entornos virtuales para aislar el entorno de ejecución.
Pasos Comunes para la Configuración de Entornos:

1. Instalación de Python: Seleccionar la versión correcta y utilizar herramientas de gestión de


paquetes como pip y conda.

2. Creación de Entornos Virtuales: Usar venv o conda environments para aislar proyectos y
evitar conflictos entre dependencias.

3. Integración de Herramientas de Desarrollo: Utilizar editores de código (e.g., Visual Studio


Code, PyCharm) y notebooks interactivos (e.g., Jupyter Notebook, Google Colab) para
facilitar la programación y experimentación.

Proceso de Desarrollo de un Proyecto de Machine Learning

El desarrollo de un proyecto de aprendizaje automático en Python sigue un ciclo de vida iterativo,


que incluye varias etapas clave:

1. Definición del Problema y Recopilación de Datos: Identificación del problema y recolección


de información necesaria.

2. Exploración y Preparación de los Datos: Análisis exploratorio para comprender la


estructura de los datos, limpieza y transformación.

3. Selección y Entrenamiento de Modelos: Selección de algoritmos apropiados, división de


datos en conjuntos de entrenamiento y prueba, y entrenamiento del modelo.

4. Evaluación y Optimización del Modelo: Evaluación del modelo entrenado con el conjunto
de prueba, ajuste de hiperparámetros o selección de algoritmos alternativos.

5. Implementación y Monitoreo: Despliegue del modelo en un entorno de producción y


monitoreo de su rendimiento (Mosquera et al., 2021; García et al., 2020).

Conclusión

Este documento ha proporcionado una visión general de las herramientas y entornos de desarrollo
para la inteligencia artificial, enfatizando el uso de Python como lenguaje de programación. Se han
discutido conceptos clave relacionados con las herramientas y lenguajes básicos para IA, el manejo
de bibliotecas de IA en Python, la configuración de entornos de desarrollo y el ciclo de vida de un
proyecto de aprendizaje automático (Caparrini, 2018).

La información presentada sirve como una base sólida para que los desarrolladores comiencen a
explorar y aplicar la inteligencia artificial en sus proyectos, aprovechando las potentes herramientas
y bibliotecas disponibles en el ecosistema de Python.
Ejemplos de Código

1. Ejemplo de Uso de NumPy y Pandas:

python

Copy code

import numpy as np

import pandas as pd

# Crear un array NumPy

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

# Crear un DataFrame de Pandas

df = pd.DataFrame(array, columns=['A', 'B', 'C'])

# Operaciones básicas

print(df.describe())

print(df.mean())

2. Ejemplo de Entrenamiento de un Modelo con Scikit-Learn:

python

Copy code

from sklearn.datasets import load_iris

from sklearn.model_selection import train_test_split

from sklearn.ensemble import RandomForestClassifier

from sklearn.metrics import accuracy_score

# Cargar dataset

iris = load_iris()

X, y = iris.data, iris.target
# Dividir datos en conjuntos de entrenamiento y prueba

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# Entrenar modelo

clf = RandomForestClassifier()

clf.fit(X_train, y_train)

# Evaluar modelo

y_pred = clf.predict(X_test)

print(f'Accuracy: {accuracy_score(y_test, y_pred)}')

Actividades Propuestas

1. Actividad 1: Exploración de Bibliotecas de IA

o Objetivo: Familiarizarse con las bibliotecas básicas de Python para IA.

o Instrucciones:

1. Instalar Python y las bibliotecas NumPy, Pandas, y Scikit-Learn.

2. Crear un script que realice operaciones básicas de manipulación de datos


utilizando estas bibliotecas.

3. Presentar los resultados y discutir las aplicaciones de cada biblioteca en


proyectos de IA.

2. Actividad 2: Configuración de un Entorno de Desarrollo

o Objetivo: Aprender a configurar un entorno de desarrollo para proyectos de IA en


Python.

o Instrucciones:

1. Instalar un editor de código como Visual Studio Code.

2. Configurar un entorno virtual usando venv o conda.


3. Instalar las bibliotecas necesarias para un proyecto de IA.

4. Documentar el proceso de configuración y presentar un ejemplo de un script


que utilice el entorno configurado.

Referencias
• Caparrini, F. S. (2018). Breve historia de la inteligencia artificial. Fundación José Ortega y
Gasset.
• García, J. D. R., Moreno-León, J., González, M. R., & Robles, G. (2020). LearningML: A Tool
to Foster Computational Thinking Skills Through Practical Artificial Intelligence Projects.
University of Murcia.
• González, C. S. G. (2023). El impacto de la inteligencia artificial en la educación:
transformación de la forma de enseñar y de aprender. University of La Laguna.
• Mosquera, J. M. L., Suarez, C. G. H., & Bucheli, V. (2021). Una revisión sistemática sobre aula
invertida y aprendizaje colaborativo apoyados en inteligencia artificial para el aprendizaje
de programación. District University of Bogotá.
• Rosas, V. Q. (2023). Aplicaciones de Inteligencia Artificial Aliadas en la Enseñanza de las
Matemáticas. Latin American Association for the Advancement of Sciences.
• Shenouda, J., & Bajwa, W. U. (2021). A Guide to Computational Reproducibility in Signal
Processing and Machine Learning. Cornell University.
• Sodhi, P., Awasthi, N., & Sharma, V. (2019). Introduction to Machine Learning and Its Basic
Application in Python. RELX Group (Netherlands).
BOOTCAMP INTELIGENCIA ARTIFICIAL
Nivel Explorador
Semana 3
Tipos de Aprendizaje en IA

Introducción
La inteligencia artificial (IA) es un campo en constante evolución que abarca una amplia variedad de
técnicas y enfoques para abordar problemas complejos. Desde su concepción, la IA ha demostrado
ser una herramienta valiosa para resolver desafíos en diversos dominios, incluyendo la medicina, la
industria y el entretenimiento. A medida que la tecnología avanza, el interés en las aplicaciones
prácticas de la IA continúa creciendo, impulsado por la capacidad de los sistemas de aprendizaje
automático para procesar y analizar grandes volúmenes de datos de manera eficiente.

Existen tres tipos principales de aprendizaje en IA: el aprendizaje supervisado, el aprendizaje no


supervisado y el aprendizaje por refuerzo. Cada uno de estos enfoques presenta características
únicas que los hacen adecuados para diferentes tipos de problemas. El aprendizaje supervisado se
utiliza comúnmente en tareas de clasificación y regresión, el aprendizaje no supervisado se aplica a
problemas de agrupamiento y reducción de dimensionalidad, mientras que el aprendizaje por
refuerzo se centra en la toma de decisiones secuenciales.

Este documento explora en detalle cada uno de estos tipos de aprendizaje, analizando sus
conceptos fundamentales y su implementación práctica utilizando el lenguaje de programación
Python. También se discuten las técnicas de preparación y limpieza de datos, que son cruciales para
el éxito de cualquier proyecto de IA. Además, se incluyen ejemplos de código, sugerencias de
imágenes y actividades para profundizar en el tema.

Finalmente, se presentan referencias bibliográficas relevantes para aquellos que deseen explorar
más a fondo los temas discutidos. La comprensión y aplicación de estos enfoques de aprendizaje
pueden proporcionar a los investigadores y desarrolladores las herramientas necesarias para
enfrentar los desafíos del futuro.
Aprendizaje Supervisado
El aprendizaje supervisado es un enfoque de IA que utiliza datos etiquetados para entrenar modelos
a predecir o clasificar nuevas entradas. Este tipo de aprendizaje es especialmente útil cuando se
dispone de grandes conjuntos de datos donde se conocen tanto las entradas como las salidas
esperadas. Algunos de los algoritmos más populares en esta categoría incluyen la regresión lineal,
la regresión logística, los árboles de decisión, las máquinas de vectores de soporte (SVM) y las redes
neuronales.

Ejemplo de Script 1: Clasificación de Imágenes de Dígitos Manuscritos


import tensorflow as tf

from tensorflow.keras.datasets import mnist

from tensorflow.keras.models import Sequential

from tensorflow.keras.layers import Dense, Flatten

# Cargar datos

(x_train, y_train), (x_test, y_test) = mnist.load_data()

# Normalizar los datos

x_train, x_test = x_train / 255.0, x_test / 255.0

# Construir el modelo

model = Sequential([

Flatten(input_shape=(28, 28)),

Dense(128, activation='relu'),

Dense(10, activation='softmax')

])

# Compilar el modelo

model.compile(optimizer='adam',

loss='sparse_categorical_crossentropy',

metrics=['accuracy'])
# Entrenar el modelo

model.fit(x_train, y_train, epochs=5)

# Evaluar el modelo

model.evaluate(x_test, y_test)

Ejemplo de Script 2: Regresión Lineal para Predecir Precios de Viviendas

import pandas as pd

from sklearn.model_selection import train_test_split

from sklearn.linear_model import LinearRegression

from sklearn.metrics import mean_squared_error

# Cargar datos

data = pd.read_csv('housing_prices.csv')

# Seleccionar características y variable objetivo

X = data[['tamaño', 'habitaciones', 'edad']]

y = data['precio']

# Dividir los datos en conjuntos de entrenamiento y prueba

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Crear y entrenar el modelo

model = LinearRegression()

model.fit(X_train, y_train)
# Hacer predicciones y evaluar el modelo

y_pred = model.predict(X_test)

error_cuadrado_medio = mean_squared_error(y_test, y_pred)

print(f'Error cuadrado medio: {error_cuadrado_medio}')

Aprendizaje No Supervisado
El aprendizaje no supervisado se caracteriza por la ausencia de etiquetas en los datos, lo que
requiere que los modelos descubran patrones y estructuras inherentes por sí mismos. Este enfoque
es ideal para tareas como la agrupación (clustering) y la reducción de dimensionalidad. Algoritmos
comunes incluyen el análisis de componentes principales (PCA), el clustering K-Means y las redes
neuronales autoencodificadoras.

Ejemplo de Script 1: Clustering de Clientes con K-Means

from sklearn.cluster import KMeans

import pandas as pd

# Cargar datos

data = pd.read_csv('clientes.csv')

# Seleccionar características relevantes

features = data[['edad', 'ingresos', 'gastos']]

# Aplicar K-Means

kmeans = KMeans(n_clusters=3)

kmeans.fit(features)

# Añadir etiquetas de clúster al dataframe

data['cluster'] = kmeans.labels_
print(data.head())

Ejemplo de Script 2: Reducción de Dimensionalidad con PCA

from sklearn.decomposition import PCA

from sklearn.preprocessing import StandardScaler

import matplotlib.pyplot as plt

# Cargar datos

data = pd.read_csv('datos_iris.csv')

# Estandarizar los datos

scaler = StandardScaler()

scaled_data = scaler.fit_transform(data)

# Aplicar PCA

pca = PCA(n_components=2)

pca_result = pca.fit_transform(scaled_data)

# Graficar los resultados

plt.scatter(pca_result[:, 0], pca_result[:, 1])

plt.title('Reducción de Dimensionalidad con PCA')

plt.xlabel('Componente Principal 1')

plt.ylabel('Componente Principal 2')

plt.show()
Aprendizaje por Refuerzo
El aprendizaje por refuerzo se centra en la interacción de un agente con un entorno, donde el agente
aprende a tomar decisiones óptimas mediante la maximización de una recompensa acumulada. Este
enfoque se utiliza comúnmente en la toma de decisiones secuenciales, como el control de robots y
juegos. Las técnicas principales incluyen el aprendizaje Q, los procesos de decisión de Markov y los
algoritmos de política de gradiente.

Ejemplo de Script 1: Q-Learning para el Juego del Pong

import gym

import numpy as np

# Crear entorno

env = gym.make('Pong-v0')

# Inicializar tabla Q

Q = np.zeros([env.observation_space.n, env.action_space.n])

# Parámetros de aprendizaje

learning_rate = 0.8

discount_factor = 0.95

num_episodes = 1000

for i in range(num_episodes):

state = env.reset()

done = False

while not done:

action = np.argmax(Q[state, :] + np.random.randn(1, env.action_space.n) * (1./(i+1)))

new_state, reward, done, _ = env.step(action)


Q[state, action] = Q[state, action] + learning_rate * (reward + discount_factor *
np.max(Q[new_state, :]) - Q[state, action])

state = new_state

print("Entrenamiento completado")

Ejemplo de Script 2: Entrenamiento de un Agente con Deep Q-Learning


import gym

import numpy as np

from keras.models import Sequential

from keras.layers import Dense

from keras.optimizers import Adam

# Crear entorno

env = gym.make('CartPole-v1')

# Crear modelo de red neuronal

model = Sequential([

Dense(24, input_shape=(env.observation_space.shape[0],), activation='relu'),

Dense(24, activation='relu'),

Dense(env.action_space.n, activation='linear')

])

model.compile(loss='mse', optimizer=Adam(lr=0.001))

# Parámetros de aprendizaje

episodes = 1000

gamma = 0.95

epsilon = 1.0

epsilon_min = 0.01
epsilon_decay = 0.995

for e in range(episodes):

state = env.reset()

state = np.reshape(state, [1, env.observation_space.shape[0]])

for time in range(500):

if np.random.rand() <= epsilon:

action = env.action_space.sample()

else:

action = np.argmax(model.predict(state))

next_state, reward, done, _ = env.step(action)

reward = reward if not done else -10

next_state = np.reshape(next_state, [1, env.observation_space.shape[0]])

model.fit(state, action, reward + gamma * np.max(model.predict(next_state)), epochs=1,


verbose=0)

state = next_state

if done:

print(f'Episode: {e}/{episodes}, score: {time}, epsilon: {epsilon:.2}')

break

if epsilon > epsilon_min:

epsilon *= epsilon_decay

print("Entrenamiento completado")
Técnicas de Preparación y Limpieza de Datos
La calidad de los datos es fundamental para el éxito de cualquier proyecto de inteligencia artificial.
Es crucial dedicar tiempo y esfuerzo a la preparación y limpieza de los datos antes de aplicar los
modelos de aprendizaje. Algunas técnicas clave incluyen el manejo de valores faltantes, la detección
y tratamiento de valores atípicos, y la codificación de variables categóricas.

Ejemplo de Script 1: Manejo de Valores Faltantes


import pandas as pd

# Cargar datos

data = pd.read_csv('datos.csv')

# Identificar valores faltantes

print(data.isnull().sum())

# Imputar valores faltantes

data.fillna(data.mean(), inplace=True)

print(data.head())

Ejemplo de Script 2: Detección y Tratamiento de Valores Atípicos

import pandas as pd

import numpy as np

# Cargar datos

data = pd.read_csv('datos.csv')

# Detección de valores atípicos usando el método IQR

Q1 = data.quantile(0.25)

Q3 = data.quantile(0.75)
IQR = Q3 - Q1

# Eliminar valores atípicos

data_clean = data[~((data < (Q1 - 1.5 * IQR)) | (data > (Q3 + 1.5 * IQR))).any(axis=1)]

print(data_clean.head())

Actividad 1
Título: Implementación de un Clasificador de Imágenes

Objetivo: Aprender a implementar y evaluar un modelo de aprendizaje supervisado utilizando datos


etiquetados.

Instrucciones:

1. Cargue el conjunto de datos MNIST.

2. Preprocese los datos normalizando las imágenes.

3. Implemente un modelo de red neuronal utilizando TensorFlow.

4. Entrene el modelo con los datos de entrenamiento.

5. Evalúe el modelo utilizando el conjunto de prueba y discuta los resultados.

Actividad 2
Título: Análisis de Agrupamiento de Clientes

Objetivo: Identificar grupos de clientes con características similares utilizando técnicas de


clustering.

Instrucciones:

1. Cargue un conjunto de datos de clientes.

2. Seleccione las características relevantes para el análisis.

3. Aplique el algoritmo K-Means para agrupar los clientes.

4. Visualice los resultados en un gráfico de dispersión.

5. Analice los clusters y discuta las posibles implicaciones para el negocio.


Actividad 3
Título: Entrenamiento de un Agente para Jugar Pong

Objetivo: Aprender a implementar un algoritmo de aprendizaje por refuerzo para resolver un


problema de juegos.

Instrucciones:

1. Cree un entorno de juego utilizando la librería Gym.

2. Implemente el algoritmo Q-Learning para entrenar al agente.

3. Ejecute el agente en el entorno y observe su comportamiento.

4. Ajuste los parámetros de aprendizaje y evalúe el impacto en el rendimiento.

5. Discuta los desafíos y las ventajas del aprendizaje por refuerzo en comparación con otros
enfoques.

Actividad 4
Título: Preparación de Datos para Modelado

Objetivo: Aprender a aplicar técnicas de limpieza y transformación de datos para mejorar la calidad
del conjunto de datos.

Instrucciones:

1. Cargue un conjunto de datos con valores faltantes y outliers.

2. Aplique técnicas de imputación para manejar los valores faltantes.

3. Detecte y trate los outliers utilizando métodos estadísticos.

4. Transforme variables categóricas en representaciones numéricas.

5. Evalúe el impacto de estas transformaciones en la calidad del conjunto de datos.


Referencias
• Mosquera, J. M. L., Suarez, C. G. H., & Bucheli, V. (2021). Una revisión sistemática sobre aula
invertida y aprendizaje colaborativo apoyados en inteligencia artificial para el aprendizaje
de programación. District University of Bogotá, 25(69), 196-214.
https://doi.org/10.14483/22487638.16934

• Nadkarni, P. M., Ohno-Machado, L., & Chapman, W. W. (2011). Natural language


processing: an introduction. Oxford University Press, 18(5), 544-551.
https://doi.org/10.1136/amiajnl-2011-000464

• Justesen, N., Bontrager, P., Togelius, J., & Risi, S. (2017). Deep Learning for Video Game
Playing. Cornell University. https://doi.org/10.48550/arxiv.1708.07902

• Williams, R. J. (1992). Simple statistical gradient-following algorithms for connectionist


reinforcement learning. Springer Science+Business Media, 8(3-4), 229-256.
https://doi.org/10.1007/bf00992696

• Cukierman, U., & Vidal, E. V. (2020). Aprendizajes reales en ambientes virtuales. El rol de la
tecnología en la era de la Inteligencia Artificial y el Big Data. Revista CPU-e, 17(34), 59-67.
https://doi.org/10.29197/cpu.v17i34.396

• Bishop, C. M. (2006). Pattern Recognition and Machine Learning. Springer.


BOOTCAMP INTELIGENCIA ARTIFICIAL
Nivel Explorador
Semana 4
Manejo y Normalización de Datos

Introducción
El análisis y procesamiento de datos es un componente esencial en el campo de la inteligencia
artificial y el aprendizaje automático. Independientemente del tipo de problema que se desee
abordar, ya sea de clasificación, regresión o agrupamiento, es fundamental contar con datos de alta
calidad que permitan obtener resultados precisos y confiables (Cukierman & Vidal, 2020). En este
contexto, el manejo adecuado de los datos faltantes, la detección y tratamiento de valores atípicos,
así como la normalización y escalado de los datos, son pasos críticos que deben considerarse antes
de aplicar cualquier algoritmo de aprendizaje automático.

La primera etapa en el procesamiento de datos consiste en lidiar con los datos faltantes y la
detección de valores atípicos. Existen diversas técnicas de imputación, como la sustitución por la
media, la mediana o el modo, que permiten completar los datos ausentes (Hariharakrishnan et al.,
2017). Asimismo, la identificación de outliers es crucial, ya que estos valores pueden sesgar
significativamente los resultados de los modelos de aprendizaje (Budach et al., 2022). Estas técnicas
deben aplicarse de manera cuidadosa, evaluando su impacto en la calidad y representatividad de
los datos.

Una vez que los datos han sido limpiados y depurados, es importante considerar la normalización y
el escalado de las variables. Esto es especialmente relevante cuando se trabaja con variables que
presentan diferentes escalas o unidades de medida, ya que puede afectar el desempeño de los
algoritmos de aprendizaje automático. Existen diversas técnicas de normalización y escalado, como
la estandarización, la normalización min-max y la normalización por rango intercuartílico, cada una
con sus propias ventajas y desafíos (Dhieb et al., 2020).

Finalmente, la evaluación de los modelos de aprendizaje automático es un paso crucial para


garantizar su desempeño y generalización. Existen diversas métricas de evaluación, como la
precisión, el recall, el F1-score y el coeficiente de determinación, que permiten analizar el ajuste de
los modelos a los datos y su capacidad predictiva. Estas métricas, junto con la validación cruzada,
ayudan a asegurar que los modelos sean robustos y generalizables a datos nuevos.
Manejo de Datos Faltantes y Detección de Outliers
Una de las principales preocupaciones en el procesamiento de datos es la presencia de información
incompleta o valores atípicos. Los datos faltantes pueden surgir por una variedad de razones, como
errores de recopilación, incompatibilidad entre fuentes de datos o incluso omisiones deliberadas.
La detección de outliers, por otro lado, se refiere a la identificación de observaciones que se desvían
significativamente del comportamiento esperado de los datos (Rehman & Belhaouari, 2021). Estos
valores atípicos pueden tener un impacto negativo en los análisis y modelos, ya que pueden sesgar
los resultados y conducir a conclusiones erróneas.

Existen diversas técnicas estadísticas y de aprendizaje automático para lidiar con estos desafíos.
Para el manejo de datos faltantes, se pueden utilizar métodos de imputación como la sustitución
por la media, mediana o moda, o técnicas más avanzadas como la imputación múltiple. En cuanto a
la detección de outliers, se pueden aplicar enfoques basados en la distancia, como el algoritmo de
las distancias de Mahalanobis, o métodos basados en el aprendizaje automático, como el análisis
de componentes principales o el aislamiento de árboles de decisión.

Para ilustrar el manejo de datos faltantes y la detección de outliers, consideremos un conjunto de


datos de ejemplo sobre préstamos bancarios. Primero identificaremos los valores faltantes y
aplicaremos técnicas de imputación para completar los datos:

import pandas as pd

import numpy as np

from sklearn.impute import SimpleImputer

# Cargamos los datos

data = pd.read_csv('loans_data.csv')

# Identificar valores faltantes

print(data.isnull().sum())

# Imputar valores faltantes

imputer = SimpleImputer(strategy='mean')

data_imputed = imputer.fit_transform(data)
A continuación, detectaremos y manejaremos los outliers en el conjunto de datos utilizando el
algoritmo de distancia de Mahalanobis:

from scipy.spatial.distance import mahalanobis

from numpy.linalg import inv

# Calcular la distancia de Mahalanobis

mean = np.mean(data_imputed, axis=0)

cov_matrix = np.cov(data_imputed, rowvar=False)

inv_cov_matrix = inv(cov_matrix)

mahalanobis_distances = [mahalanobis(sample, mean, inv_cov_matrix) for sample in


data_imputed]

# Imprimir los 5 valores atípicos más extremos

print(sorted(mahalanobis_distances, reverse=True)[:5])

Normalización y Escalado de Datos


Después de lidiar con los datos faltantes y los outliers, es importante considerar la normalización y
el escalado de las variables. Esto es especialmente relevante cuando se trabaja con variables que
presentan diferentes escalas o unidades de medida, ya que puede afectar significativamente el
desempeño de los modelos de aprendizaje automático.

Algunas de las técnicas de normalización y escalado más comunes incluyen:

● Estandarización: Consiste en restar la media y dividir por la desviación estándar de cada


variable, lo que resulta en una distribución con media 0 y desviación estándar 1.

● Normalización min-max: Escala linealmente las variables al rango mediante la fórmula (x -


min(x)) / (max(x) - min(x)).

● Normalización por rango intercuartílico: Utiliza los percentiles 25 y 75 para escalar las
variables de manera robusta a outliers.

Cada una de estas técnicas tiene sus propias ventajas y desafíos, y su elección dependerá del
contexto del problema y las características de los datos.
Continuando con el ejemplo de los préstamos bancarios, vamos a aplicar diferentes técnicas de
normalización a las variables:

from sklearn.preprocessing import StandardScaler, MinMaxScaler, RobustScaler

# Estandarización

scaler = StandardScaler()

data_standardized = scaler.fit_transform(data_imputed)

# Normalización min-max

scaler = MinMaxScaler()

data_minmax = scaler.fit_transform(data_imputed)

# Normalización por rango intercuartílico

scaler = RobustScaler()

data_robust = scaler.fit_transform(data_imputed)

Algoritmos de Regresión Lineal y Logística


Los algoritmos de regresión lineal y logística son dos de los modelos de aprendizaje automático más
ampliamente utilizados. La regresión lineal es un método que se emplea para modelar relaciones
lineales entre variables, permitiendo hacer predicciones sobre una variable dependiente a partir de
una o más variables independientes. Por otro lado, la regresión logística se utiliza cuando la variable
dependiente es binaria o categórica y el objetivo es modelar la probabilidad de pertenencia a una
de las categorías. Ambos algoritmos tienen un sólido fundamento teórico y han demostrado su
eficacia en una amplia gama de aplicaciones, desde la predicción de ventas hasta el análisis de
riesgos crediticios.

Continuando con nuestro ejemplo de préstamos bancarios, vamos a implementar un modelo de


regresión lineal y uno de regresión logística:

from sklearn.model_selection import train_test_split

from sklearn.linear_model import LinearRegression, LogisticRegression

# Preparación de los datos


X_train, X_test, y_train, y_test = train_test_split(data_robust, target, test_size=0.2,
random_state=42)

# Regresión lineal

linear_model = LinearRegression()

linear_model.fit(X_train, y_train)

# Regresión logística

logistic_model = LogisticRegression()

logistic_model.fit(X_train, y_train)

# Evaluación de los modelos

print('Regresión lineal R-cuadrado:', linear_model.score(X_test, y_test))

print('Regresión logística precisión:', logistic_model.score(X_test, y_test))

Evaluación de Modelos de Machine Learning


La evaluación de los modelos de aprendizaje automático es un paso
crucial para garantizar su desempeño y generalización. Existen diversas
métricas que pueden ser utilizadas dependiendo del tipo de problema y
los objetivos del análisis. Para problemas de regresión, algunas métricas
comunes incluyen el error cuadrático medio, el coeficiente de
determinación (R^2) y el error absoluto medio (Artetxe et al., 2018). Para
problemas de clasificación, algunas métricas relevantes son la precisión,
el recall, el F1-score y la curva ROC (An Investigation of Wine Quality
Testing using Machine Learning Techniques, 2020).

Adicionalmente, es importante considerar técnicas de validación cruzada como el k-fold cross-


validation para evaluar el desempeño de los modelos de manera más robusta y evitar el sobreajuste.
La validación cruzada permite estimar el rendimiento del modelo de manera más precisa y
generalizable al dividir los datos en múltiples conjuntos de entrenamiento y validación y calcular
métricas promedio. Esto ayuda a garantizar que el modelo tenga un buen desempeño no solo en los
datos de entrenamiento, sino también en datos nuevos y desconocidos.
Actividad 1
Título de la actividad: Manejo de Datos Faltantes y Outliers
Objetivo de la actividad: Aplicar técnicas de imputación y detección de outliers en un conjunto de
datos.
Instrucciones:

1. Cargue un conjunto de datos de su elección que contenga valores faltantes y outliers.

2. Identifique los valores faltantes e implemente una técnica de imputación adecuada.

3. Calcule las distancias de Mahalanobis para detectar outliers.

4. Elimine o ajuste los outliers detectados y compare los resultados antes y después del
manejo de datos.

Actividad 2
Título de la actividad: Normalización y Escalado de Datos
Objetivo de la actividad: Implementar y comparar diferentes técnicas de normalización y escalado
de datos.
Instrucciones:

1. Seleccione un conjunto de datos con variables en diferentes escalas.

2. Aplique la estandarización, normalización min-max y normalización por rango


intercuartílico.

3. Visualice los datos antes y después de cada técnica de normalización.

4. Compare los efectos de las diferentes técnicas en el desempeño de un modelo de regresión


lineal simple.

Actividad 3
Título de la actividad: Implementación de Algoritmos de Regresión
Objetivo de la actividad: Desarrollar y evaluar modelos de regresión lineal y logística.
Instrucciones:

1. Divida su conjunto de datos en conjuntos de entrenamiento y prueba.

2. Implemente un modelo de regresión lineal y otro de regresión logística.

3. Entrene los modelos y evalúe su desempeño utilizando métricas apropiadas.

4. Analice las diferencias en el desempeño de ambos modelos y discuta las posibles causas.
Actividad 4
Título de la actividad: Evaluación de Modelos de Machine Learning
Objetivo de la actividad: Aplicar métricas de evaluación y validación cruzada en modelos de
aprendizaje.
Instrucciones:

1. Seleccione un modelo de aprendizaje automático previamente implementado.

2. Aplique métricas de evaluación apropiadas para analizar su desempeño.

3. Implemente una técnica de validación cruzada para evaluar la robustez del modelo.

4. Discuta los resultados obtenidos y proponga mejoras para optimizar el modelo.

Referencias
● An Investigation of Wine Quality Testing using Machine Learning Techniques. (2020 April
30). Science Press, 14(4). https://doi.org/10.37896/jxu14.4/408

● Arif, M. S., Mukheimer, A., & Asif, D. (2023 August 16). Enhancing the Early Detection of
Chronic Kidney Disease: A Robust Machine Learning Model. Multidisciplinary Digital
Publishing Institute, 7(3), 144-144. https://doi.org/10.3390/bdcc7030144

● Artetxe, A., Beristáin, A., & Graña, M. (2018 October 1). Predictive models for hospital
readmission risk: A systematic review of methods. Elsevier BV, 164, 49-64.
https://doi.org/10.1016/j.cmpb.2018.06.006

● Budach, L., Feuerpfeil, M., Ihde, N., Nathansen, A., Noack, N., Patzlaff, H., Harmouch, H., &
Naumann, F. (2022 January 1). The Effects of Data Quality on Machine Learning
Performance. Cornell University. https://doi.org/10.48550/arxiv.2207.14529

● Cukierman, U., & Vidal, E. V. (2020 July 15). Aprendizajes reales en ambientes virtuales. El
rol de la tecnología en la era de la Inteligencia Artificial y el Big Data. 17(34), 59-67.
https://doi.org/10.29197/cpu.v17i34.396

● Dhieb, N., Ghazzai, H., Besbes, H., & Massoud, Y. (2020 January 1). Scalable and Secure
Architecture for Distributed IoT Systems. Cornell University.
https://doi.org/10.48550/arxiv.2005.02456

● Hariharakrishnan, J., Mohanavalli, S., Srividya, & Kumar, K. B. (2017 January 1). Survey of
pre-processing techniques for mining big data.
https://doi.org/10.1109/icccsp.2017.7944072

● Juddoo, S., & George, C. (2020 November 25). A Qualitative Assessment of Machine
Learning Support for Detecting Data Completeness and Accuracy Issues to Improve Data
Analytics in Big Data for the Healthcare Industry.
https://doi.org/10.1109/elecom49001.2020.9297009

● Mosquera, J. M. L., Suarez, C. G. H., & Bucheli, V. (2021 July 1). Una revisión sistemática
sobre aula invertida y aprendizaje colaborativo apoyados en inteligencia artificial para el
aprendizaje de programación. District University of Bogotá, 25(69), 196-214.
https://doi.org/10.14483/22487638.16934

● Rehman, A. U., & Belhaouari, S. B. (2021 June 2). Unsupervised outlier detection in
multidimensional data. Springer Science+Business Media, 8(1).
https://doi.org/10.1186/s40537-021-00469-z

También podría gustarte