ПочатиПочніть безкоштовно

Хешування ознак і LabeledPoint

Після розбиття електронних листів на слова наші сирі набори даних «spam» і «non-spam» зараз складаються з однорядкових повідомлень. Щоб класифікувати ці повідомлення, потрібно перетворити текст на ознаки.

У другій частині вправи ви спочатку створите екземпляр HashingTF(), щоб відобразити текст у вектори з 200 ознак. Далі для кожного повідомлення у файлах «spam» і «non-spam» ви розіб'єте їх на слова й відобразите кожне слово в одну ознаку. Саме ці ознаки будуть використані, щоб визначити, чи є повідомлення «spam» чи «non-spam». Потім ви створите мітки для ознак. Для коректного повідомлення мітка буде 0 (тобто повідомлення не є спамом), а для «spam» — мітка 1 (тобто повідомлення є спамом). Нарешті, ви об'єднаєте обидва розмічені набори даних.

Пам'ятайте, у вашому робочому середовищі доступний SparkContext sc. Також змінні spam_words і non_spam_words уже доступні у вашому робочому середовищі.

Ця вправа є частиною курсу

Основи Big Data з PySpark

Переглянути курс

Інструкції до вправи

  • Створіть екземпляр HashingTF(), щоб відобразити текст електронних листів у вектори з 200 ознак.
  • Кожне повідомлення в наборах даних «spam» і «non-spam» розбите на слова, і кожне слово відображене в одну ознаку.
  • Розмітьте ознаки: 1 для спаму, 0 для не спаму.
  • Об'єднайте зразки «spam» і «non-spam» в один набір даних.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

# 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)
Редагувати та запускати код