นำโมเดลไปใช้กับ data stream
ถึงเวลานำ machine learning Pipeline ที่ฝึกไว้ไปใช้กับข้อมูลแบบ streaming และจัดหมวดหมู่ค่าเหล่านั้นทันที
ใช้ predict() กับข้อความที่รับเข้ามาเพื่อระบุหมวดหมู่ แล้วดำเนินการตามผลการทำนาย เช่น ปิดหน้าต่างบ้าน (หรือไม่ก็ได้)
จำไว้ว่า category 1 หมายถึงสภาพอากาศดี ส่วน category 0 หมายถึงสภาพอากาศไม่ดีหรือหนาวเย็น
นอกจากนี้ pipeline จะคืนค่าเป็น array ของผลการทำนาย เนื่องจากส่งข้อมูลเข้าไปเพียงหนึ่งรายการ จึงต้องเข้าถึงค่าแรกด้วย category[0]
ฟังก์ชัน close_window() จะจัดการส่วนนี้ให้ และยังบันทึกข้อมูลไว้สำหรับการศึกษาเพิ่มเติมด้วย
มีการโหลด pandas ในชื่อ pd และ json ไว้ในเซสชันแล้ว และโมเดลพร้อมใช้งานในชื่อ pl
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การวิเคราะห์ข้อมูล IoT ด้วย Python
คำแนะนำการฝึกหัด
- แปลง dictionary เป็น pandas DataFrame ด้วย
DataFrame.from_records()โดยใช้"timestamp"เป็น index และcolsเป็น columns - ระบุหมวดหมู่ของข้อมูลนี้โดยใช้
predict()จาก pipeline object แล้วกำหนดผลลัพธ์ให้กับ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)