- Entrenar un modelo de aprendizaje automático utilizando bibliotecas de Python en un Jupyter Notebook
- Incorporar un modelo de aprendizaje automático entrenado en una aplicación web Streamlit
Éstas son las actividades para esta lección:
TRABAJAR CON MODELOS DE APRENDIZAJE AUTOMÁTICO
Otra característica importante de Jupyter Notebooks, Python y Streamlit es la posibilidad de entrenar modelos de aprendizaje automático y realizar predicciones.
Si eres nuevo en la Inteligencia Artificial, es posible que desees ver las lecciones de IA en este currículo educativo para aprender lo básico antes de saltar a la codificación más avanzada involucrada aquí. Puedes utilizar una plataforma de modelos de aprendizaje automático fácil de usar como Teachable Machine para crear un modelo e incorporarlo a una aplicación web de Python.
Si tienes experiencia en inteligencia artificial y en trabajar con conjuntos de datos utilizando Jupyter Notebooks, este es un buen paso para ti.
En esta lección, aprenderás sobre algunas de las librerías de aprendizaje automático de Python, y algunos de los diferentes modelos de aprendizaje automático que puedes crear usando Python.
A modo de repaso, para crear un modelo de aprendizaje automático, hay 3 partes principales.
DATASET
ENCUENTRA PATRONES CON UN ALGORITMO DE APRENDIZAJE
PREDICCIÓN
El conjunto de datos es la entrada para el modelo. Puede incluir texto, imágenes, sonidos o poses. En la Unidad 2 hemos trabajado con datos numéricos y de texto utilizando cuadernos Jupyter. En esta lección seguiremos trabajando con datos de texto, en forma de hoja de cálculo.
Encontrar patrones es esencialmente construir el modelo de aprendizaje automático utilizando el conjunto de datos. Python contiene muchas bibliotecas que construirán un modelo de IA a partir de los datos. En este currículo educativo, utilizaremos muchas de las funciones del paquete scikit-learn. Además de las bibliotecas que proporciona, el sitio web contiene mucha información excelente sobre el aprendizaje automático y el proceso de construcción de modelos. Es un gran recurso para aprender más.
Una vez creado el modelo, se puede utilizar para predecir un resultado basándose en nueva información. Una vez más, Python ofrece bibliotecas que permiten hacerlo.
PREPROCESAMIENTO DE DATOS
Antes de que el conjunto de datos pueda enviarse al algoritmo para construir el modelo, debe ser preprocesadopara que el algoritmo de construcción del modelo pueda trabajar con él y crear el modelo más preciso posible. De hecho, la mayor parte del trabajo para crear un modelo de aprendizaje automático está en el preprocesamiento. Tendrás que examinar cuidadosamente los datos para decidir qué es importante, qué se puede omitir y qué hay que limpiar.
¿Qué implica el preprocesamiento? Cuando se trata de un conjunto de datos de texto, hay que tener en cuenta algunos aspectos.
Valores nulos
A veces, el conjunto de datos contiene valores en blanco o nulos, sobre todo si se trata de datos de encuestas. A veces eliminará las filas que tengan datos nulos.
Sin embargo, si el número de muestras es bajo, es posible que no desee eliminarlas. Otra opción es sustituir un valor nulo por algún otro valor. Puede ser cero o la media de todos los demás valores de ese campo.
Valores atípicos
A veces, los datos contienen una o dos muestras que son muy diferentes del resto de los datos. Esto podría sesgar el modelo. No se desea que los valores atípicos afecten a la creación del modelo, por lo que a menudo se eliminan del conjunto de datos.
Por ejemplo, puede tener un conjunto de datos en el que el 95% de las muestras son personas de entre 10 y 30 años, pero tiene unas pocas muestras aleatorias en las que las personas tienen más de 50 años. Dado que la gran mayoría de las muestras pertenecen al grupo de edad de 10 a 30 años, puede plantearse eliminar las muestras del grupo de más edad.
Normalización
A menudo, las cifras de un gran conjunto de datos varían en función de las características representadas. Por ejemplo, puede que la edad varíe de 0 a 70 años, pero también puede que el salario oscile entre 0 y 500.000 euros. Las escalas son muy diferentes, por lo que una característica puede contar más en el modelo.
Para solucionar esto, puede estandarizar los datos para que estén en una sola escala. scikit-learn proporciona un StandardScaler, que actualiza cada característica para que la media sea 0 y la desviación estándar sea 1.
Otra cosa a considerar es un número equilibrado de muestras para cada clase o etiqueta. Usted quiere asegurarse de que su son aproximadamente el mismo número de cada clase en su conjunto de datos.
Codificación
A la IA le gustan los números, no necesariamente las palabras. scikit-learn proporciona funciones de codificador, por lo que puede convertir fácilmente una serie de posibles valores de texto en una serie de números.
Un ejemplo podría ser los niveles de actividad, con valores de muestra sedentario, ligero, moderado, alto. Esas respuestas podrían ser codificadas para ser valores 0, 1, 2 y 3, que es mucho más fácil de manejar para el algoritmo de construcción de modelos.
SEPARAR DATOS
Una vez preprocesados los datos, hay que dividirlos en un conjunto de entrenamiento y un conjunto de pruebas. El conjunto de entrenamiento se utilizará para entrenar y crear el modelo. A continuación, probaremos el modelo con el conjunto de pruebas para ver cómo funciona.
Hay formas estándar de dividirlo (normalmente el 75% para la formación y el 25% para las pruebas), pero puedes dividirlo como quieras. Una vez más, se proporcionan funciones para que todo esto sea automatizado para usted.
CREACIÓN DEL MODELO
El siguiente paso es crear el modelo. Una gran decisión que hay que tomar es, ¿qué algoritmo utilizo? Hay muchos algoritmos de aprendizaje supervisado entre los que elegir, y es difícil saber cuál utilizar. Un buen proceso consiste en probar varios algoritmos diferentes y ver cuál es el que ofrece mayor precisión.
El primer paso es decidir si necesita una clasificación o un algoritmo de regresión. Eso depende de lo que se quiera predecir.
Los algoritmos de clasificación se utilizan para predecir objetivos discretos o clases. Por ejemplo, clasificar un correo electrónico como spam o no spam sería un problema de clasificación
Los algoritmos de regresión se utilizan para predecir algo que se encuentra en un intervalo continuo. Un ejemplo sería predecir el salario que cobrará una persona. La predicción es un intervalo de números y el resultado puede ser cualquier valor de ese intervalo.
He aquí algunos de los tipos más populares de algoritmos de creación de modelos.

Clasificación
- Árbol de decisión
- Bosque aleatorio
- K-Vecinos Cercanos
- Clasificador bayesiano ingenuo
- Regresión logística
- Máquina de vectores soporte
Regresión
- Regresión lineal
- Regresión Ridge
- Regresión Lasso
- Regresión polinómica
- Regresión lineal bayesiana
- Regresión por vectores de soporte
Tenga en cuenta que algunos algoritmos pertenecen a ambos tipos. Por ejemplo, existe un clasificador de árbol de decisión y un regresor de árbol de decisión. Y una máquina de vectores de soporte funciona para la clasificación, y la regresión de vectores de soporte funciona para la regresión.
Entonces, ¿cómo decidir cuál utilizar? Deberías investigar qué utilizan otros científicos de datos en distintas situaciones para ver qué puede ser más adecuado para tu modelo. También deberías probar distintos algoritmos con tus datos y averiguar cuál es el más preciso. También puedes ajustar los parámetros de un algoritmo concreto para ver si ofrece un modelo más preciso.
scitkit-learn proporciona funciones para todos estos algoritmos, por lo que es sencillo crear el modelo.
EVALUACIÓN DEL MODELO
Para que el modelo sea lo mejor posible, es necesario evaluar su rendimiento. Dos variables habituales en la evaluación de un modelo son el sesgo y la varianza.
Sesgo es la diferencia entre el valor previsto del modelo y el valor correcto.
Varianza es cuánto cambian las predicciones cuando se utilizan datos diferentes.
Se trata de lograr un buen equilibrio entre sesgo y varianza.
Sesgo elevado -> ajuste insuficiente.
Infraajuste ocurre cuando el modelo es demasiado simple para tener en cuenta el ruido de los datos de entrenamiento. Esto puede ocurrir si no hay suficientes datos o características (columnas), o si hay demasiado ruido en los datos. Si un modelo no funciona bien tanto con los datos de entrenamiento como con los datos de prueba, es señal de inadaptación.
Alta varianza -> sobreajuste.
Sobreajuste ocurre cuando se entrena un modelo con un conjunto de datos y éste funciona muy bien, pero si luego se le presentan nuevos datos, no funciona del todo bien. Esto puede ocurrir si el modelo es demasiado complejo e intenta ajustarse demasiado a los datos de entrenamiento. El modelo puede predecir muy bien con los datos de entrenamiento, pero luego funciona mal con los datos de prueba.
Una técnica para comprobar el rendimiento de un modelo es la validación cruzada.
Validación cruzada consiste en entrenar el modelo varias veces, utilizando cada vez diferentes datos de entrenamiento/prueba. El conjunto de datos se divide en varios pliegueso subconjuntos. A continuación, uno de los subconjuntos se utiliza como conjunto de validación o prueba, y los pliegues restantes se utilizan para entrenarlo. Esto se realiza varias veces, por lo que cada vez cambian los conjuntos de entrenamiento y prueba.
sciikit-learn también proporciona una librería de métricas para que puedas obtener fácilmente las puntuaciones de rendimiento de los modelos.
- puntuación de precisión = predicciones correctas/ predicciones totales
- precisión = verdaderos positivos/(verdaderos positivos + falsos positivos)
- recall = verdaderos positivos/(verdaderos positivos + falsos negativos)
- Puntuación F1 = (2 x precisión x recuperación)/(precisión + recuperación)
- especificidad = verdadero negativo/ (verdaderos positivos + falsos negativos)
- matriz de confusión - muestra los recuentos de verdaderos positivos, verdaderos negativos, falsos positivos y falsos negativos
Comprobando las métricas de varios algoritmos, puede elegir el mejor modelo.
PREDICCIÓN
Una vez que tengas un modelo que te satisfaga, querrás utilizarlo en tu aplicación.
Es una práctica común realizar el preprocesamiento, la creación y la evaluación de su modelo utilizando Python, en un entorno como Jupyter Notebooks. A partir de ahí, puedes exportar tu modelo como un archivo.
Después, dentro de tu aplicación Streamlit, puedes cargar el modelo y utilizarlo para hacer predicciones.
En las actividades de esta lección, recorrerás todo este proceso utilizando un conjunto de datos de Stroke Risk. Verás cómo preprocesar los datos, crear modelos utilizando diferentes algoritmos y, a continuación, utilizar un modelo en una sencilla aplicación Streamlit para predecir el riesgo de accidentes cerebrovasculares, dadas algunas características de entrada.
ACTIVIDAD 1: ENTRENAR UN MODELO DE AI EN JUPYTER NOTEBOOK
Explorar un conjunto de datos Stroke Risk para crear un modelo de IA
- Descargar un conjunto de datos Stroke Risk para predicción de Kaggle.
- Trabaja con los datos en un Jupyter Notebook para:
- Revisar los datos
- Preprocesar los datos para prepararlos para el modelo
- Crea algunos modelos diferentes
- Evalúen y elijan un modelo para su aplicación
- Exportar el modelo
DESAFÍO

Prueba un modelo diferente a los del Jupyter Notebook.
- Busquen otros algoritmos de clasificación en el sitio web de scikit-learn y otros ejemplos de creación de modelos en Kaggle.
- Elige un algoritmo y añade el código a tu cuaderno para crear el modelo.
- Utilicen las métricas de scikit-learn para comprobar la precisión.
¿Qué tal funciona tu modelo? ¿Es mejor que cualquiera de los otros algoritmos del cuaderno?
ACTIVIDAD 2: CREA UNA APLICACIÓN DE PREDICCIÓN
Utiliza tu modelo en una aplicación Streamlit
Elija la dirección video adecuada en función de cómo esté codificando su aplicación, ya sea localmente con Visual Studio Code o en línea con Codespaces.
DESAFÍO

El conjunto de datos Iris es un conjunto de datos clásico que clasifica las flores de iris en 3 especies (setosa, versicolor y virginica) basándose en las dimensiones de los pétalos y los sépalos.
- Investigue el conjunto de datos para conocer sus características y objetivos.
- Puede descargar el conjunto de datos y crear su propio modelo o utilizar este modelo(archivo pickle) creado utilizando K-vecinos más cercanos. Tenga en cuenta que no se necesitó un escalador para este conjunto de datos. El archivo pickle sólo contiene el modelo.
- Importa el modelo y crea una aplicación Streamlit para predecir la especie de iris basándote en las cuatro características del conjunto de datos.
INSPIRACIÓN TECHNOVATION
He aquí algunos ejemplos sorprendentes de participantes en Technovation que han utilizado Python y Streamlit para crear aplicaciones web que incorporan modelos de aprendizaje automático.
T.E.D.D.Y - Detector precoz de angustia basado en texto para jóvenes , por Equipo TEDDY de EE.UU.ayuda a profesores y orientadores a detectar precozmente los problemas de salud mental de los alumnos. TEDDY utiliza la IA para identificar frases que expresan sentimientos negativos o que muestran los patrones lingüísticos propios de las personas con depresión. A continuación, los estudiantes pueden ser remitidos a un consejero para recibir apoyo.
REFLEXIÓN
Has pasado por todo el proceso de preprocesamiento de un conjunto de datos, la construcción de varios modelos, y la evaluación y elección de uno para su uso en una aplicación. ¡Eso es MUCHO que aprender en una sola lección!

REVISIÓN DE TÉRMINOS CLAVE
- Preprocesamiento - Tomar un conjunto de datos y asegurarse de que son adecuados para entrenar un modelo de aprendizaje automático.
- Algoritmo de clasificación - algoritmo utilizado para entrenar un modelo de aprendizaje automático que clasificará o predecirá valores discretos.
- Algoritmo de regresión - algoritmo utilizado para entrenar un modelo de aprendizaje automático para predecir un valor en un rango continuo.
- Sesgo - diferencia entre el valor previsto del modelo y el valor correcto, debida a suposiciones incorrectas que simplifican el modelo.
- Varianza - la cantidad de variabilidad en las predicciones de un modelo, cuando éste es incapaz de generalizar ante nuevos datos
- Sobreajuste - cuando el modelo se ajusta demasiado bien a los datos de entrenamiento y no puede predecir bien los nuevos datos, debido a la elevada varianza del modelo.
- Infraajuste - cuando un modelo se simplifica demasiado y no funciona bien ni con los datos de entrenamiento ni con los de prueba, debido a un sesgo elevado o a suposiciones en el modelo.
RECURSOS ADICIONALES
Aprendizaje automático
- Geeks for Geeks Machine Learning Tutorial: ofrece una excelente introducción y una visión general de algunos de los procesos y la terminología del aprendizaje automático.
- Tutorial de Scikit-Learn de Simplilearn: repasa un conjunto de datos sobre la calidad del vino para practicar el uso de scikit-learn en un cuaderno Jupyter.
- Aprendizaje automático con scikit-learn - una lista de reproducción completa en Youtube por Data School
Streamlit
- Construye una Applicación Web basada en un Modelo de Machine Learning desde cero con Patrick Loeber - otro ejemplo de construcción de un modelo y su uso en una aplicación web, de principio a fin.
- Clasificador de imágenes con Streamlit, si su modelo se entrena con imágenes