Загрузка данных: спам и не спам
Логистическая регрессия — популярный метод для предсказания категориальных переменных. Пожалуй, одно из самых распространённых её применений — классификация сообщений или электронных писем как спама. В этом упражнении из трёх частей вы создадите классификатор спама на основе логистической регрессии с помощью Spark MLlib. Вот краткий план построения классификатора.
- Создайте RDD из строк, представляющих электронные письма.
- Запустите алгоритмы извлечения признаков из MLlib, чтобы преобразовать текст в RDD векторов.
- Вызовите алгоритм классификации на RDD векторов — он вернёт объект модели для классификации новых точек.
- Оцените модель на тестовом наборе данных с помощью одной из функций оценки MLlib.
В первой части упражнения вы загрузите файлы со спамом и «хорошими» письмами («ham») в RDD, разобьёте письма на отдельные слова и посмотрите на первый элемент каждого RDD.
Напоминаем: в вашем рабочем пространстве доступен SparkContext sc. Также уже заданы переменная file_path_spam (путь к файлу со спамом) и file_path_non_spam (путь к файлу с письмами, не являющимися спамом).
Это упражнение является частью курса
Основы Big Data с PySpark
Инструкции к упражнению
- Создайте два RDD: один для спам-писем, другой для писем, не являющихся спамом («ham»).
- Разбейте каждое письмо в RDD спама и не-спама на отдельные слова.
- Выведите первый элемент из разбитых RDD для спама и не-спама.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# 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", ____.____())