Конвейер для фильтрации спама в 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])