SMS-spam-pipeline
Je hebt al een tijdje niet naar de SMS-gegevens gekeken. De vorige keer deden we het volgende:
- de tekst in tokens splitsen
- stopwoorden verwijderen
- de hashing-truc toepassen
- de gegevens omzetten van tellingen naar IDF en
- een logistic regression-model trainen.
Elk van deze stappen gebeurde los van elkaar. Dit lijkt een perfect geval voor een pipeline!
De klassen Pipeline en LogisticRegression zijn al in de sessie geïmporteerd, dus daar hoef je je geen zorgen over te maken!
Deze oefening maakt deel uit van de cursus
Machine Learning met PySpark
Oefeninstructies
- Maak een object om tekst in tokens te splitsen.
- Maak een object om stopwoorden te verwijderen. Gebruik in plaats van expliciet de naam van de invoerkolom te geven de methode
getOutputCol()op het vorige object. - Maak objecten om de hashing-truc toe te passen en de gegevens om te zetten naar een TF-IDF. Gebruik opnieuw de methode
getOutputCol(). - Maak een pipeline die alle bovenstaande stappen omvat, plus een object om een Logistic Regression-model te maken.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
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])