Contenido del curso
Modelo Predictivo
Tipos de Aprendizaje
Herramientas para IA
Ciclo de Vida ML
Ética en IA
Detectar spam con Python en Google Colab
Resumen
¿Quieres entender cómo un modelo de machine learning clasifica correos como spam? Aquí construyes uno desde cero en Google Colab usando Python, Pandas y Scikit-Learn, ideal si recién empiezas en ciencia de datos y quieres ver el flujo completo: cargar datos, entrenar y evaluar.
La idea es simple: tomar encabezados de correos etiquetados, convertirlos en números que la computadora entienda y dejar que un modelo bayesiano aprenda a distinguir lo bueno de lo basura.
¿Cómo se prepara el entorno en Google Colab?
Google Colab es una interfaz que ejecuta código de Python directamente en el navegador, sin instalar nada en tu máquina. Trabajas con celdas de texto y celdas de código, y las corres con el botón de play o con shift + enter [01:38].
Antes de escribir lógica, importas las librerías base. Pandas se encarga del manejo y análisis de datos, mientras que Scikit-Learn aporta las funciones para vectorizar texto, dividir datos y entrenar modelos [00:55].
¿Qué es Pandas? Es una librería de Python que te permite cargar, explorar y transformar datos en estructuras tipo tabla llamadas data frames.
Un detalle importante: cuando arrastras un archivo al Colab, ese archivo se borra al cerrar la pestaña. Si pausas la clase, vuelve a cargarlo [02:20].
¿Cómo cargar y explorar el dataset de correos?
Después de subir el dataset a Colab, copias la ruta del archivo dando clic en los tres puntos junto al nombre y la pegas en tu código. Esto evita errores de ubicación al leer los datos [02:55].
La información se guarda en una variable llamada df, que hace referencia a un data frame. Para inspeccionarla rápido, usas:
python df.head()
Python se lee de izquierda a derecha como una oración: df es el sujeto y .head() es el verbo, la acción que trae las primeras filas del dataset [04:20]. En este caso verás dos columnas: el encabezado del correo y la clase que indica si es spam o un correo regular.
¿Cómo se transforma texto en números para el modelo?
Las computadoras no entienden palabras, entienden números. Por eso el texto se convierte en vectores numéricos antes de entrenar cualquier modelo [05:05].
En ese proceso se eliminan las llamadas stop words, que son palabras sin valor informativo como artículos, preposiciones o signos de puntuación. Algunos ejemplos:
- el, la, los.
- que, de.
- comas y signos de interrogación.
Luego se definen dos variables clave:
- X guarda los encabezados ya transformados, que alimentarán el entrenamiento.
- Y guarda la etiqueta que dice si cada correo es spam o normal.
Esta etiqueta es lo que convierte al ejercicio en aprendizaje supervisado: el modelo aprende porque tú ya le dijiste qué es qué.
¿Cómo dividir los datos en entrenamiento y prueba?
No puedes entrenar y evaluar con los mismos datos, porque entonces no sabrías si el modelo aprendió o solo memorizó. La solución es partir el dataset [06:30].
El parámetro test_size define esa partición. Con un valor de 0.3, separas 70% para entrenamiento y 30% para prueba. Es decir, el modelo aprende con la mayor parte y se evalúa con el resto, datos que nunca vio.
Otro parámetro útil es random_state. Fija los números aleatorios para que tu ejecución y la de cualquier otra persona usen los mismos registros. Aquí se usa el valor 42, pero puedes poner 99, 12 o el que quieras, siempre que mantengas la consistencia [07:25].
¿Para qué sirve random_state? Para que el muestreo aleatorio sea reproducible. Si tú y yo usamos el mismo número, obtenemos exactamente los mismos datos en train y test.
Un tip de orden: las celdas en Colab se numeran según el orden de ejecución. Si ves saltos como 3, 10, 12, puedes reorganizar arrastrando con la flechita hacia abajo para mantener el flujo lógico.
¿Cómo entrenar y evaluar el modelo bayesiano?
El entrenamiento sigue tres pasos claros [08:50]:
- Instanciar el modelo, es decir, guardarlo en una variable lista para usarse.
- Entrenarlo pasándole los datos
X_trainjunto con su variable objetivoY_train, para que aprenda la relación entre encabezados y etiquetas. - Predecir sobre
X_test, los datos reservados que el modelo nunca vio.
Ese 30% de prueba es lo que te dice si el modelo realmente generaliza o solo se aprendió las respuestas.
Al ejecutar las métricas de evaluación, en este ejercicio aparece un 1 en todos los indicadores, lo que significa 100% de aciertos [09:50]. Esto pasa porque los datos son simulados; en la vida real difícilmente verás un resultado tan limpio.
Un extra de Colab: el ícono de Gemini junto a cada celda te explica qué hace el código si te pierdes con alguna función o parámetro [08:15]. Útil cuando estás aprendiendo a leer Python.
¿Tu modelo logró clasificar correctamente todos los correos? Cuéntame en los comentarios qué dataset te gustaría probar después.