Laden von Spam- und Nicht-Spam-Daten
Die logistische Regression ist eine beliebte Methode, um eine kategoriale Antwort vorherzusagen. Einer der häufigsten Anwendungsfälle der logistischen Regression ist wahrscheinlich die Klassifikation von Nachrichten oder E-Mail-Spam. In dieser dreiteiligen Übung erstellst du einen Klassifikator für E-Mail-Spam mithilfe von logistischer Regression und Spark MLlib. Hier sind die nötigen Schritte zur Erstellung eines Spam-Klassifikators:
- Erstelle einen RDD aus Strings, die E-Mails darstellen.
- Führe die MLlib-Algorithmen zur Merkmalsextraktion aus, um den Text in einen RDD aus Vektoren zu konvertieren.
- Rufe einen Klassifikationsalgorithmus mit dem RDD aus Vektoren auf, um ein Modellobjekt zur Klassifikation neuer Datenpunkte zurückzugeben.
- Evaluiere das Modell mithilfe eines Testdatensatzes und nutze dazu eine der Evaluierungsfunktionen von MLlib.
Im ersten Teil der Übung lädst du die Spam- und Nicht-Spam-Dateien in RDDs, zerlegst die E-Mails in einzelne Wörter und betrachtest das erste Element in jedem der RDDs.
Zur Erinnerung: Der SparkContext sc
ist schon im Arbeitsbereich verfügbar. Auch die Variablen file_path_spam
(Pfad zur Spam-Datei) und file_path_non_spam
(Pfad zur Nicht-Spam-Datei) sind bereits im Arbeitsbereich vorhanden.
Diese Übung ist Teil des Kurses
Grundlagen von Big Data mit PySpark
Anleitung zur Übung
- Erstelle zwei RDDs: einen für „Spam“ und einen für „Nicht-Spam“.
- Zerlege jede E-Mail in den „Spam“- und „Nicht-Spam“-RDDs in Wörter.
- Gib das erste Element in den zerlegten RDDs für „Spam“ und „Nicht-Spam“ aus.
Interaktive Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
# Load the datasets into RDDs
spam_rdd = sc.____(file_path_spam)
non_spam_rdd = sc.____(file_path_non_spam)
# Split the email messages into words
spam_words = spam_rdd.____(lambda email: email.split(' '))
non_spam_words = non_spam_rdd.____(lambda email: ____.____(' '))
# Print the first element in the split RDD
print("The first element in spam_words is", spam_words.____())
print("The first element in non_spam_words is", ____.____())