Pipeline pro detekci SMS spamu
SMS data jsi naposledy viděl/a před delší dobou. Tehdy jsme provedli tyto kroky:
- rozdělení textu na tokeny
- odstranění stop slov
- aplikace hashovacího triku
- převod dat z počtů na IDF
- trénování modelu logistické regrese.
Každý z těchto kroků probíhal samostatně – a to přímo vybízí k použití pipeline!
Třídy Pipeline a LogisticRegression jsou v session už naimportované, takže se o to nemusíš starat.
Toto cvičení je součástí kurzu
Machine Learning with PySpark
Pokyny k cvičení
- Vytvoř objekt pro rozdělení textu na tokeny.
- Vytvoř objekt pro odstranění stop slov. Místo explicitního zadání názvu vstupního sloupce použij metodu
getOutputCol()na předchozím objektu. - Vytvoř objekty pro aplikaci hashovacího triku a transformaci dat do podoby TF-IDF. Opět použij metodu
getOutputCol(). - Vytvoř pipeline, která zabalí všechny výše uvedené kroky i objekt pro trénování modelu logistické regrese.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
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])