載入垃圾郵件與非垃圾郵件資料
邏輯斯迴歸是用來預測類別型反應的常見方法。其中一個最常見的應用就是訊息或電子郵件的垃圾郵件分類。在這個分成 3 個部分的練習中,你會使用 Spark MLlib 的邏輯斯迴歸建立一個電子郵件垃圾郵件分類器。以下是建立垃圾郵件分類器的重點步驟:
- 建立代表電子郵件的字串 RDD。
- 執行 MLlib 的特徵擷取演算法,將文字轉換成向量的 RDD。
- 對向量 RDD 呼叫分類演算法,回傳可用來分類新資料點的模型物件。
- 使用 MLlib 的評估函式之一,在測試資料集上評估模型。
在練習的第一部分,你會將「spam」與「ham」(非垃圾郵件)的檔案載入成 RDD,將郵件切分成單字,並查看每個 RDD 的第一個元素。
請記住,你的工作環境中已提供 SparkContext sc。變數 file_path_spam(「spam」檔案路徑)與 file_path_non_spam(「non-spam」檔案路徑)也已可用。
本練習屬於課程
使用 PySpark 的 Big Data 基礎
練習說明
- 建立兩個 RDD,一個用於「spam」,另一個用於「non-spam(ham)」。
- 將「spam」與「non-spam」這兩個 RDD 中的每封郵件切分為字詞。
- 印出分割後的「spam」與「non-spam」兩個 RDD 的第一個元素。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# 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", ____.____())