Merkmals-Hashing und LabeledPoint
Nachdem wir die E-Mails in Wörter zerlegt haben, bestehen unsere „Spam“- und „Nicht-Spam“-Rohdatensätze derzeit aus einzeiligen Nachrichten. Um diese Nachrichten klassifizieren zu können, müssen wir den Text in Merkmale umwandeln.
Im zweiten Teil der Übung erstellst du zunächst eine HashingTF()
-Instanz, um Text auf Vektoren mit 200 Merkmalen abzubilden. Dann zerlegst du jede Nachricht in den „Spam“- und „Nicht-Spam“-Dateien in Wörter und ordnest jedes Wort einem Merkmal zu. Dies sind die Merkmale, anhand derer entschieden wird, ob eine Nachricht als Spam einzustufen ist oder nicht. Als Nächstes erstellst du die Labels für Merkmale. Eine gültige Nachricht erhält das Label 0 (d. h., die Nachricht ist kein Spam), wohingegen eine ungültige Nachricht das Label 1 erhält (d. h., die Nachricht ist Spam). Zum Schluss kombinierst du die beiden so gekennzeichneten Datensätze.
Zur Erinnerung: Der SparkContext sc
ist schon im Arbeitsbereich verfügbar. Auch die Variablen spam_words
und non_spam_words
sind bereits im Arbeitsbereich vorhanden.
Diese Übung ist Teil des Kurses
Grundlagen von Big Data mit PySpark
Anleitung zur Übung
- Erstelle eine
HashingTF()
-Instanz, um E-Mail-Text auf Vektoren mit 200 Merkmalen abzubilden. - Zerlege jede Nachricht in den „Spam“- und „Nicht-Spam“-Datensätzen in Wörter und ordne jedes Wort einem Merkmal zu.
- Beschrifte die Merkmale: 1 für „Spam“, 0 für „Nicht-Spam“.
- Kombiniere die „Spam“- und „Nicht-Spam“-Stichproben in einem einzigen Datensatz.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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)