SMS-Spam-Pipeline
Du hast dir die SMS-Daten schon lange nicht mehr angesehen. Beim letzten Mal haben wir Folgendes gemacht:
- den Text in Token aufteilen
- Stoppwörter entfernt
- den Hashing-Trick angewendet
- die Daten von Zählungen in IDF umgewandelt und
- ein logistisches Regressionsmodell trainiert.
Jeder dieser Schritte wurde unabhängig voneinander durchgeführt. Das scheint eine tolle Anwendung für eine Pipeline zu sein!
Die Klassen Pipeline
und LogisticRegression
sind bereits in die Sitzung importiert worden, du musst dich also nicht darum kümmern!
Diese Übung ist Teil des Kurses
Maschinelles Lernen mit PySpark
Anleitung zur Übung
- Erstelle ein Objekt zum Zerlegen von Text in Token.
- Erstelle ein Objekt, um Stoppwörter zu entfernen. Anstatt den Namen der Eingabespalte explizit anzugeben, verwendest du die Methode
getOutputCol()
für das vorherige Objekt. - Erstelle Objekte, um den Hashing-Trick anzuwenden und die Daten in eine TF-IDF zu verwandeln. Verwende wieder die Methode
getOutputCol()
. - Erstelle eine Pipeline, die alle oben genannten Schritte umfasst, sowie ein Objekt, um ein logistisches Regressionsmodell zu erstellen.
Interaktive Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
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])