始める無料で始める

Feature hashing と LabelPoint

メールを単語に分割した後、生データセットの 'spam' と 'non-spam' は現在、1行メッセージで構成されています。これらのメッセージを分類するには、テキストを特徴量に変換する必要があります。

この演習の後半では、まず HashingTF() インスタンスを作成し、テキストを200次元のベクトルにマッピングします。次に、'spam' と 'non-spam' の各メッセージを単語に分割し、各単語を1つの特徴量にマッピングします。これらの特徴量を使って、メッセージが 'spam' か 'non-spam' かを判定します。続いて、特徴量にラベルを付けます。正当なメッセージのラベルは 0(スパムではない)、'spam' メッセージのラベルは 1(スパムである)です。最後に、両方のラベル付きデータセットを結合します。

作業スペースには SparkContext sc が利用可能です。また、spam_wordsnon_spam_words の変数はすでに用意されています。

この演習はコースの一部です

PySparkで学ぶBig Data入門

コースを見る

演習の手順

  • メール本文を200次元の特徴ベクトルにマッピングするために、HashingTF() インスタンスを作成します。
  • 'spam' と 'non-spam' の各メッセージを単語に分割し、各単語を1つの特徴量にマッピングします。
  • 特徴量にラベルを付けます:スパムは 1、非スパムは 0。
  • スパムと非スパムの両サンプルを1つのデータセットに結合します。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Create a HashingTF instance with 200 features
tf = ____(numFeatures=200)

# Map each word to one feature
spam_features = tf.____(spam_words)
non_spam_features = tf.____(____)

# Label the features: 1 for spam, 0 for non-spam
spam_samples = spam_features.map(lambda features:LabeledPoint(____, features))
non_spam_samples = non_spam_features.map(lambda features:_____(____, features))

# Combine the two datasets
samples = spam_samples.____(non_spam_samples)
コードを編集して実行