將 MovieLens 資料集載入 RDD
協同過濾是一種推薦系統技術,會根據使用者對各種產品的評分與互動來推薦新的項目。隨著機器學習與資料平行化處理的發展,推薦系統在近年已廣泛應用於電影、音樂、新聞、書籍、研究文章、搜尋查詢、社群標籤等多種領域。在這個分成 3 個部分的練習中,你的目標是使用 PySpark MLlib,基於 MovieLens 100k 資料集 的一個子集,開發一個簡單的電影推薦系統。
在第一部分中,你會先將 MovieLens 的 ratings.csv 載入為 RDD。RDD 的每一行格式為 userId,movieId,rating,timestamp。你需要移除 timestamp 欄,並將每一行對應成 Ratings 物件(userID, productID, rating),最後再把 RDD 切分為訓練與測試兩個 RDD。
請記得,你的工作環境中已提供 SparkContext sc。此外,變數 file_path(指向 ratings.csv 的路徑)以及 ALS 所用的類別(也就是 Rating)也都已可使用。
本練習屬於課程
使用 PySpark 的 Big Data 基礎
練習說明
- 將
ratings.csv資料集載入為 RDD。 - 使用
,作為分隔符號來切分 RDD。 - 對於 RDD 的每一行,使用
Rating()類別建立userID, productID, rating的 tuple。 - 將資料隨機切分為訓練資料與測試資料(0.8 與 0.2)。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# 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])