將模型套用到資料串流
現在把你已訓練完成的機器學習 Pipeline 套用到串流資料,並立即為每筆數值分類。
接著對進來的訊息使用 predict() 來判定其類別。
根據預測結果採取動作,關閉你家裡的窗戶(或不關)。
記住,類別 1 代表天氣良好,而類別 0 代表天氣不佳、寒冷。
另外,pipeline 會回傳一個預測陣列。由於你只傳入一個元素,需要用 category[0] 取得第一個元素。
close_window() 函式會為你處理這件事,並另外將這筆紀錄寫入日誌以便後續分析。
pandas 已以 pd 載入,json 也已預先載入,模型以 pl 提供可用。
本練習屬於課程
使用 Python 分析 IoT 資料
練習說明
- 將字典解析為 pandas 的 DataFrame:使用
DataFrame.from_records(),以"timestamp"作為索引,並以cols作為欄位。 - 使用 pipeline 物件的
predict()來判定此筆紀錄的類別,並將結果指定給category。 - 呼叫
close_window(),將 DataFramedf作為第一個引數,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)