将模型应用到数据流
现在把您训练好的机器学习 Pipeline 应用于流式数据,并立即对数值进行分类。
随后,您将对接收到的消息使用 predict() 来判断其所属类别。
根据预测结果进行相应操作:关闭家里的窗户(或不关闭)。
请记住,类别 1 表示天气良好,而类别 0 表示天气恶劣且寒冷。
另外,pipeline 会返回一个预测数组。由于您只传入了一个元素,因此需要使用 category[0] 访问第 1 个元素。
函数 close_window() 会为您处理此操作,并会将该记录写入日志以便后续分析。
pandas 已作为 pd 以及 json 预加载到当前会话中,模型对象为 pl。
本练习是课程的一部分
用 Python 分析 IoT 数据
练习说明
- 使用
DataFrame.from_records()将该字典解析为一个 pandas DataFrame,使用"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)