スパムと非スパムデータの読み込み
Logistic Regression は、カテゴリカルな応答を予測するための一般的な手法です。最もよくある応用例のひとつが、メッセージやメールのスパム判定です。この3部構成の演習では、Spark MLlib を使ってロジスティック回帰によるメールのスパム分類器を作成します。以下はスパム分類器を作るための簡単な手順です。
- メールを表す文字列の RDD を作成します。
- MLlib の特徴量抽出アルゴリズムを実行して、テキストをベクトルの RDD に変換します。
- そのベクトルの RDD に分類アルゴリズムを適用して、新しいデータ点を分類するモデルオブジェクトを得ます。
- MLlib の評価関数のいずれかを使って、テストデータセット上でモデルを評価します。
演習の最初のパートでは、'spam' と 'ham'(非スパム)のファイルを RDD に読み込み、メールを単語に分割し、各 RDD の最初の要素を確認します。
作業スペースには SparkContext の sc が用意されています。さらに、'spam' ファイルへのパスを表す file_path_spam 変数と、'non-spam' ファイルへのパスを表す file_path_non_spam 変数もすでに利用できます。
この演習はコースの一部です
PySparkで学ぶBig Data入門
演習の手順
- 'spam' 用と 'non-spam (ham)' 用に、それぞれ1つずつ RDD を作成します。
- '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", ____.____())