НачатьНачать бесплатно

Хэширование признаков и LabeledPoint

После разбивки писем на слова наши исходные наборы данных «спам» и «не спам» содержат сообщения из одной строки. Чтобы классифицировать эти сообщения, необходимо преобразовать текст в признаки.

Во второй части упражнения вы создадите экземпляр HashingTF() для отображения текста в векторы из 200 признаков. Затем для каждого сообщения из файлов «спам» и «не спам» вы разобьёте текст на слова и сопоставите каждое слово с одним признаком. Именно эти признаки будут использоваться для определения того, является ли сообщение спамом. Далее вы создадите метки для признаков: для обычного сообщения метка равна 0 (то есть сообщение не является спамом), для спам-сообщения — 1 (то есть сообщение является спамом). В завершение вы объедините оба размеченных набора данных.

Напомним, что в вашем рабочем пространстве доступен SparkContext sc, а также переменные spam_words и non_spam_words.

Это упражнение является частью курса

Основы Big Data с PySpark

Посмотреть курс

Инструкции к упражнению

  • Создайте экземпляр HashingTF() для отображения текста письма в векторы из 200 признаков.
  • Разбейте каждое сообщение из наборов данных «спам» и «не спам» на слова и сопоставьте каждое слово с одним признаком.
  • Присвойте метки признакам: 1 — для спама, 0 — для не спама.
  • Объедините выборки спама и не спама в единый набор данных.

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

# Create a HashingTF instance with 200 features
tf = ____(numFeatures=200)

# Map each word to one feature
spam_features = tf.____(spam_words)
non_spam_features = tf.____(____)

# Label the features: 1 for spam, 0 for non-spam
spam_samples = spam_features.map(lambda features:LabeledPoint(____, features))
non_spam_samples = non_spam_features.map(lambda features:_____(____, features))

# Combine the two datasets
samples = spam_samples.____(non_spam_samples)
Редактировать и запускать код