Pipeline per SMS spam
È da un po’ che non guardi i dati degli SMS. L’ultima volta abbiamo fatto quanto segue:
- suddiviso il testo in token
- rimosso le stop word
- applicato l’hashing trick
- convertito i dati da conteggi a IDF e
- addestrato un modello di regressione logistica.
Ognuno di questi passaggi è stato eseguito separatamente. Sembra un’ottima occasione per usare una pipeline!
Le classi Pipeline e LogisticRegression sono già state importate nella sessione, quindi non devi preoccupartene!
Questo esercizio fa parte del corso
Machine Learning con PySpark
Istruzioni dell'esercizio
- Crea un oggetto per suddividere il testo in token.
- Crea un oggetto per rimuovere le stop word. Invece di specificare esplicitamente il nome della colonna di input, usa il metodo
getOutputCol()sull’oggetto precedente. - Crea gli oggetti per applicare l’hashing trick e trasformare i dati in TF-IDF. Usa di nuovo il metodo
getOutputCol(). - Crea una pipeline che racchiuda tutti i passaggi sopra, oltre a un oggetto per creare un modello di Regressione Logistica.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
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])