SMSスパムのパイプライン
しばらくのあいだ、SMSデータは扱っていませんでした。前回は次のことを行いました。
- テキストをトークンに分割する
- ストップワードを除去する
- ハッシングトリックを適用する
- カウントからIDFに変換する
- ロジスティック回帰モデルを学習する
これらの各ステップは個別に実行していました。これはパイプラインに最適なケースですね!
Pipeline と LogisticRegression クラスはすでにセッションにインポートされているので、そこは気にしなくて大丈夫です!
この演習はコースの一部です
Machine Learning with PySpark
演習の手順
- テキストをトークンに分割するオブジェクトを作成します。
- ストップワードを除去するオブジェクトを作成します。入力列名を明示的に与えるのではなく、直前のオブジェクトの
getOutputCol()メソッドを使います。 - ハッシングトリックを適用し、データを TF-IDF に変換するオブジェクトを作成します。ここでも
getOutputCol()メソッドを使います。 - 上記のすべてのステップに加えて、ロジスティック回帰モデルを作成するオブジェクトも含めたパイプラインを作成します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
from pyspark.ml.feature import Tokenizer, StopWordsRemover, HashingTF, IDF
# Break text into tokens at non-word characters
tokenizer = ____(inputCol='text', outputCol='words')
# Remove stop words
remover = ____(inputCol=____, outputCol='terms')
# Apply the hashing trick and transform to TF-IDF
hasher = ____(inputCol=____, outputCol="hash")
idf = ____(inputCol=____, outputCol="features")
# Create a logistic regression object and add everything to a pipeline
logistic = LogisticRegression()
pipeline = Pipeline(stages=[____, ____, ____, ____, logistic])