Pipeline do wykrywania spamu SMS
Dane SMS nie były przez chwilę w centrum uwagi. Ostatnio wykonaliśmy na nich następujące kroki:
- podział tekstu na tokeny,
- usunięcie stop słów,
- zastosowanie techniki hashowania,
- przekształcenie danych z liczby wystąpień na wartości TF-IDF,
- wytrenowanie modelu regresji logistycznej.
Każdy z tych kroków był wykonywany osobno. To świetny przykład zastosowania pipeline'u!
Klasy Pipeline i LogisticRegression zostały już zaimportowane do sesji, więc nie musisz się tym przejmować.
To ćwiczenie jest częścią kursu
Uczenie maszynowe z PySpark
Instrukcje do ćwiczenia
- Utwórz obiekt do podziału tekstu na tokeny.
- Utwórz obiekt do usuwania stop słów. Zamiast podawać nazwę kolumny wejściowej wprost, użyj metody
getOutputCol()na poprzednim obiekcie. - Utwórz obiekty do zastosowania techniki hashowania i przekształcenia danych do postaci TF-IDF. Ponownie skorzystaj z metody
getOutputCol(). - Utwórz pipeline, który połączy wszystkie powyższe kroki oraz obiekt budujący model regresji logistycznej.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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])