Carregar dados de spam e non-spam
A regressão logística é um método popular para prever uma resposta categórica. Provavelmente, uma das aplicações mais comuns da regressão logística é a classificação de spam de mensagens ou e-mails. Neste exercício de três partes, você criará um classificador de spam de e-mail com regressão logística usando o Spark MLlib. Aqui estão as etapas resumidas para você criar um classificador de spam.
- Crie um RDD de strings que representam o e-mail.
- Execute os algoritmos de extração de recursos do MLlib para converter o texto em um RDD de vetores.
- Chame um algoritmo de classificação no RDD de vetores para retornar um objeto de modelo para classificar novos pontos.
- Avalie o modelo em um conjunto de dados de teste usando uma das funções de avaliação do MLlib.
Na primeira parte do exercício, você carregará os arquivos "spam" e "ham" (non-spam) em RDDs, dividirá os e-mails em palavras individuais e examinará o primeiro elemento em cada um dos RDD.
Lembre-se de que você tem um SparkContext sc
disponível em seu espaço de trabalho. Além disso, as variáveis file_path_spam
(que é o caminho para o arquivo "spam") e file_path_non_spam
(que é o caminho para o arquivo "non-spam") já estão disponíveis em seu espaço de trabalho.
Este exercício faz parte do curso
Fundamentos de Big Data com PySpark
Instruções de exercício
- Crie dois RDDS, um para "spam" e outro para "non-spam (ham)".
- Divida cada e-mail nos RDDs "spam" e "non-spam" em palavras.
- Imprima o primeiro elemento no RDD dividido de "spam" e "non-spam".
Exercício interativo prático
Experimente este exercício preenchendo este código de exemplo.
# 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", ____.____())