Aan de slagGa gratis aan de slag

Feature hashing en LabelPoint

Na het splitsen van de e-mails in woorden bestaan onze ruwe gegevenssets 'spam' en 'non-spam' nu uit berichten van één regel. Om deze berichten te classificeren, moeten we tekst omzetten naar features.

In het tweede deel van de oefening maak je eerst een HashingTF()-instantie om tekst te mappen naar vectoren van 200 features. Vervolgens splits je elk bericht in de bestanden 'spam' en 'non-spam' in woorden en map je elk woord naar één feature. Dit zijn de features die worden gebruikt om te bepalen of een bericht 'spam' of 'non-spam' is. Daarna maak je labels voor de features. Voor een geldig bericht is het label 0 (dus: het bericht is geen spam) en voor een 'spam'-bericht is het label 1 (dus: het bericht is spam). Tot slot combineer je beide gelabelde datasets.

Onthoud dat je een SparkContext sc beschikbaar hebt in je werkruimte. Ook de variabelen spam_words en non_spam_words zijn al beschikbaar in je werkruimte.

Deze oefening maakt deel uit van de cursus

Big Data Fundamentals met PySpark

Cursus bekijken

Oefeninstructies

  • Maak een HashingTF()-instantie om e-mailtekst te mappen naar vectoren van 200 features.
  • Elk bericht in de datasets 'spam' en 'non-spam' wordt gesplitst in woorden en elk woord wordt naar één feature gemapt.
  • Label de features: 1 voor spam, 0 voor niet-spam.
  • Combineer zowel de spam- als de niet-spam-samples tot één dataset.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# Create a HashingTF instance with 200 features
tf = ____(numFeatures=200)

# Map each word to one feature
spam_features = tf.____(spam_words)
non_spam_features = tf.____(____)

# Label the features: 1 for spam, 0 for non-spam
spam_samples = spam_features.map(lambda features:LabeledPoint(____, features))
non_spam_samples = non_spam_features.map(lambda features:_____(____, features))

# Combine the two datasets
samples = spam_samples.____(non_spam_samples)
Code bewerken en uitvoeren