Pipeline för SMS-skräppost
Du har inte tittat på SMS-data på ett tag. Senast du gjorde det utförde du följande steg:
- delade upp texten i tokens
- tog bort stoppord
- tillämpade hashing-tricket
- konverterade data från räkningar till IDF och
- tränade en logistisk regressionsmodell.
Varje steg utfördes oberoende av de andra. Det här verkar vara ett perfekt tillfälle att använda en pipeline!
Klasserna Pipeline och LogisticRegression har redan importerats till sessionen, så det behöver du inte tänka på!
Den här övningen är en del av kursen
Maskininlärning med PySpark
Övningsinstruktioner
- Skapa ett objekt för att dela upp text i tokens.
- Skapa ett objekt för att ta bort stoppord. Använd metoden
getOutputCol()på det föregående objektet i stället för att ange indatakolumnens namn explicit. - Skapa objekt för att tillämpa hashing-tricket och omvandla data till TF-IDF. Använd metoden
getOutputCol()igen. - Skapa en pipeline som kapslar in alla ovanstående steg samt ett objekt för att skapa en logistisk regressionsmodell.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
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])