LoslegenKostenlos loslegen

„MovieLens“-Datensatz in RDDs laden

Kollaboratives Filtern ist eine Technik für Empfehlungssysteme, bei der anhand der Bewertungen und Interaktionen von Benutzern mit verschiedenen Produkten neue Produkte empfohlen werden. Mit dem Aufkommen von maschinellem Lernen und der parallelen Datenverarbeitung wurden Empfehlungssysteme in den letzten Jahren sehr populär. Sie werden in diversen Bereichen eingesetzt, zum Beispiel für Filme, Musik, Nachrichten, Bücher, Forschungsartikel, Suchanfragen und Social-Media-Tags. In dieser dreiteiligen Übung wirst du mittels PySpark MLlib ein einfaches Filmempfehlungssystem entwickeln und dazu eine Teilmenge des „MovieLens 100K“-Datensatzes verwenden.

Im ersten Teil lädst du zunächst die MovieLens-Daten (ratings.csv) in einen RDD. Von jeder Zeile im RDD, die das Format userId,movieId,rating,timestamp hat, musst du die MovieLens-Daten auf ein Ratings-Objekt (userID, productID, rating) abbilden, nachdem du die Timestamp-Spalte entfernt hast. Abschließend teilst du den RDD in zwei RDDs für Training und Test auf.

Zur Erinnerung: Der SparkContext sc ist schon im Arbeitsbereich verfügbar. Auch die Variable file_path (mit dem Pfad zur Datei ratings.csv) und die ALS-Klasse (d. h. Rating) sind bereits im Arbeitsbereich vorhanden.

Diese Übung ist Teil des Kurses

Grundlagen von Big Data mit PySpark

Kurs anzeigen

Anleitung zur Übung

  • Lade den Datensatz ratings.csv in einen RDD.
  • Zerlege den RDD mit , als Trennzeichen.
  • Erstelle für jede Zeile des RDD mithilfe der Klasse Rating() ein Tupel der Form userID, productID, rating.
  • Teile die Daten nach dem Zufallsprinzip in Trainingsdaten und Testdaten auf (im Verhältnis von 0,8 zu 0,2).

Interaktive Übung

Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.

# Load the data into RDD
data = sc.____(file_path)

# Split the RDD 
ratings = data.____(lambda l: l.split('____'))

# Transform the ratings RDD 
ratings_final = ratings.____(lambda line: Rating(int(line[0]), int(____), float(____)))

# Split the data into training and test
training_data, test_data = ratings_final.____([0.8, 0.2])
Code bearbeiten und ausführen