Carga de datos spam y no spam
La regresión logística es un método popular para prever una respuesta categórica. Probablemente, una de las aplicaciones más comunes de la regresión logística es la clasificación de spam en mensajes o correo electrónico. En este ejercicio de 3 partes crearás un clasificador de spam en correo electrónico con regresión logística utilizando Spark MLlib. Estos son los breves pasos que debes dar para crear un clasificador de spam.
- Crea un RDD de cadenas que represente el correo electrónico.
- Ejecuta los algoritmos de extracción de características de MLlib para convertir texto en un RDD de vectores.
- Llama a un algoritmo de clasificación en el RDD de vectores para devolver un modelo con el que clasificar nuevos puntos.
- Evalúa el modelo con un conjunto de datos de prueba utilizando una de las funciones de evaluación de MLlib.
En la primera parte del ejercicio cargarás los archivos "spam" y "ham" (no spam) en los RDD, dividirás los mensajes de correo electrónico en palabras y observarás el primer elemento de cada uno de los RDD.
Recuerda que tienes sc
de SparkContext disponible en tu espacio de trabajo. La variable file_path_spam
(que es la ruta del archivo "spam") y file_path_non_spam
(que es la ruta del archivo "non-spam") ya están disponibles también en tu espacio de trabajo.
Este ejercicio forma parte del curso
Fundamentos de big data con PySpark
Instrucciones de ejercicio
- Crea dos RDDS, uno para "spam" y otro para "non-spam (ham)".
- Divide cada mensaje de correo electrónico de los RDD "spam" y "non-spam" en palabras.
- Imprime el primer elemento del RDD dividido tanto de "spam" como de "non-spam".
Ejercicio interactivo práctico
Pruebe este ejercicio completando este código de muestra.
# Load the datasets into RDDs
spam_rdd = sc.____(file_path_spam)
non_spam_rdd = sc.____(file_path_non_spam)
# Split the email messages into words
spam_words = spam_rdd.____(lambda email: email.split(' '))
non_spam_words = non_spam_rdd.____(lambda email: ____.____(' '))
# Print the first element in the split RDD
print("The first element in spam_words is", spam_words.____())
print("The first element in non_spam_words is", ____.____())