- Entrenarás un modelo de aprendizaje automático utilizando bibliotecas de Python en un Jupyter Notebook
- Incorporarás un modelo de aprendizaje automático entrenado en una aplicación web Streamlit
Estas son las actividades para esta lección:
TRABAJANDO 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 nueva en Inteligencia Artificial, puede que quieras ver las lecciones de AI en este currículo educativo para aprender lo básico antes de saltar a la programació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 bibliotecas de máquinas de aprendizaje 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.
CONJUNTO DE DATOS
ENCUENTRA PATRONES CON UN ALGORITMO DE APRENDIZAJE
¡PREDICCIÓN!
El conjunto de datos es la entrada para el modelo. Puedes incluir texto, imágenes, sonidos o poses. En la Unidad 2 hemos trabajado con datos numéricos y de texto utilizando Jupyter Notebooks. 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 muchos 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 para ello.
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ás las filas que tengan datos nulos.
Sin embargo, si el número de muestras es bajo, es posible que no desees 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, puedes 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, puedes plantearte 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, puedes normalizar 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. Tú quieres asegurarte de que son aproximadamente el mismo número de cada clase en tu 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.
SEPARANDO 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 ti.
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 un algoritmo de clasificación o un algoritmo de regresión. Esto 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
- Decision Tree
- Random Forest
- K-Nearest Neighbors
- Naive Bayes
- Regresión logística
- Máquina de soporte de vectores
Regresión
- Regresión lineal
- Regresión Ridge
- Regresión Lasso
- Regresión polinómica
- Regresión lineal bayesiana
- Regresión por vectores de apoyo
Ten en cuenta que algunos algoritmos pertenecen a ambos tipos. Por ejemplo, existe un clasificador de Decision Tree y un regresor de Decision Tree. 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.
El sesgo es la diferencia entre el valor previsto del modelo y el valor correcto.
La 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 -> infaajuste
El infraajusteocurre 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, significa que no está bien ajustado.
Alta varianza -> sobreajuste.
El 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.
la 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 pliegues 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 un métricas para que pueda obtener fácilmente las puntuaciones de rendimiento de sus 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, puedes 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 tu 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 riesgo de ictus. Verás cómo preprocesar los datos, crear modelos utilizando diferentes algoritmos y, a continuación, utilizarás un modelo en una sencilla aplicación Streamlit para predecir el riesgo de ictus, dadas algunas características de entrada.
ACTIVIDAD 1: ENTRENA UN MODELO DE AI EN JUPYTER NOTEBOOK
Explorar un conjunto de datos de riesgo de ictus para crear un modelo de IA
- Descargar un conjunto de datos de predicción de ictus de Kaggle.
- Trabaja con los datos en Jupyter Notebook para:
- Revisar los datos
- Preprocesar los datos para prepararlos para el modelo
- Crear algunos modelos diferentes
- Evaluar y elegir un modelo para tu aplicación
- Exportar el modelo
RETO

Prueba un modelo distinto de los que aparecen en Jupyter Notebook.
- Busca otros algoritmos de clasificación en el sitio web de scikit-learn y consulta 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.
- Utiliza 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
Elige el video apropiado dependiendo de cómo estés programación tu aplicación, ya sea localmente con Visual Studio Code, o en línea con Codespaces.
RETO

El conjunto de datos de 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.
- Investiga el conjunto de datos para conocer sus características y objetivos.
- Puedes descargar el conjunto de datos y crear tu propio modelo o utilizar este modelo(archivo pickle) creado utilizando K-nearest neighbors. Ten en cuenta que no se necesita 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 DE 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 problemas de salud mental en estudiantes. 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 puede ser remitido a un consejero para recibir apoyo.
de la India es una aplicación basada en el aprendizaje automático y la inteligencia artificial que predice terremotos, proporciona análisis cartográficos completos, educa a los usuarios sobre toda la información necesaria para la seguridad en caso de terremoto y ofrece formas de concienciar sobre los terremotos.
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 de calidad del vino para practicar el uso de scikit-learn en un Jupyter Notebook
- Aprendizaje automático con scikit-learn - una lista de reproducción completa en Youtube por Data School
Streamlit
- Build a Machine Learning Web App from Scratch with 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 tu modelo se entrena con imágenes