データストリームにモデルを適用する
それでは、学習済みの機械学習パイプラインをストリーミングデータに適用し、値をその場で分類してみましょう。
受信したメッセージに対して 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)