Конвеєр для SMS-спаму
Ви вже певний час не працювали з даними SMS. Востаннє ми зробили таке:
- розбили текст на токени
- видалили стоп-слова
- застосували «хешування ознак» (hashing trick)
- перетворили дані з лічильників на IDF і
- натренували модель логістичної регресії.
Кожен із цих кроків виконувався окремо. Це виглядає як чудовий випадок для конвеєра!
Класи Pipeline і LogisticRegression уже імпортовано в середовище, тож про це можете не турбуватися!
Ця вправа є частиною курсу
Machine Learning з PySpark
Інструкції до вправи
- Створіть об'єкт для розбиття тексту на токени.
- Створіть об'єкт для видалення стоп-слів. Замість явного зазначення назви вхідного стовпця скористайтеся методом
getOutputCol()на попередньому об'єкті. - Створіть об'єкти для застосування «хешування ознак» і перетворення даних у TF-IDF. Знову використайте метод
getOutputCol(). - Створіть конвеєр, який об'єднує всі кроки вище, а також об'єкт для створення моделі Logistic Regression.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
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])