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

Конвейер для фильтрации спама в SMS

Вы уже некоторое время не работали с данными SMS. В прошлый раз мы выполнили следующие шаги:

  • разбили текст на токены;
  • удалили стоп-слова;
  • применили хеш-трюк;
  • преобразовали данные из счётчиков в TF-IDF;
  • обучили модель логистической регрессии.

Каждый из этих шагов выполнялся отдельно. Это отличный пример задачи, которую удобно решать с помощью конвейера!

Классы Pipeline и LogisticRegression уже импортированы в сессию, так что об этом можно не беспокоиться.

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

Машинное обучение с PySpark

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

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

  • Создайте объект для разбиения текста на токены.
  • Создайте объект для удаления стоп-слов. Вместо того чтобы явно указывать имя входного столбца, воспользуйтесь методом getOutputCol() предыдущего объекта.
  • Создайте объекты для применения хеш-трюка и преобразования данных в TF-IDF. Снова используйте метод getOutputCol().
  • Создайте конвейер, который объединяет все перечисленные выше шаги, а также объект для создания модели логистической регрессии.

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

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

from pyspark.ml.feature import Tokenizer, StopWordsRemover, HashingTF, IDF

# Break text into tokens at non-word characters
tokenizer = ____(inputCol='text', outputCol='words')

# Remove stop words
remover = ____(inputCol=____, outputCol='terms')

# Apply the hashing trick and transform to TF-IDF
hasher = ____(inputCol=____, outputCol="hash")
idf = ____(inputCol=____, outputCol="features")

# Create a logistic regression object and add everything to a pipeline
logistic = LogisticRegression()
pipeline = Pipeline(stages=[____, ____, ____, ____, logistic])
Редактировать и запускать код