始める無料で始める

データストリームにモデルを適用する

それでは、学習済みの機械学習パイプラインをストリーミングデータに適用し、値をその場で分類してみましょう。

受信したメッセージに対して predict() を使用し、カテゴリを判定します。 予測結果に基づいて、家の窓を閉める(あるいは閉めない)というアクションを実行します。

カテゴリ 1 は天気が良いことを、カテゴリ 0 は寒くて悪天候であることを意味する点に注意してください。

さらに、このパイプラインは予測結果を配列として返します。今回は要素を1つだけ渡しているため、category[0] を使って最初の要素にアクセスする必要があります。

close_window() 関数がこの処理を代わりに行い、さらに後の分析のためにレコードをログに記録します。

このセッションには pandas が pd として、json があらかじめ読み込まれており、モデルは pl として利用できます。

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

Python による IoT データの分析

コースを見る

演習の手順

  • DataFrame.from_records() を使って辞書を pandas の DataFrame に変換し、"timestamp" をインデックス、cols を列として指定してください。
  • パイプラインオブジェクトの predict() を使ってこのレコードのカテゴリを判定し、結果を category に代入してください。
  • close_window() を呼び出す際、第1引数に DataFrame の df を、第2引数に category を渡してください。

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

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

def model_subscribe(client, userdata, message):
    data = json.loads(message.payload)
    # Parse to DataFrame
    df = pd.____.____([data], index=____, columns=____)
    # Predict result
    category = ____
    if category[0] < 1:
        # Call business logic
        ____
    else:
        print("Nice Weather, nothing to do.")  

# Subscribe model_subscribe to MQTT Topic
subscribe.callback(model_subscribe, topic, hostname=MQTT_HOST)
コードを編集して実行