Áp dụng mô hình cho luồng dữ liệu
Giờ hãy áp dụng Pipeline Machine Learning mà bạn đã huấn luyện lên dữ liệu streaming và phân loại giá trị ngay lập tức.
Sau đó bạn sẽ dùng predict() trên các thông điệp đi vào để xác định category.
Dựa trên kết quả dự đoán, bạn sẽ hành động: đóng cửa sổ trong nhà (hoặc không).
Nhớ rằng category 1 nghĩa là thời tiết tốt, còn category 0 là thời tiết xấu, lạnh.
Ngoài ra, pipeline trả về một mảng các dự đoán. Vì bạn chỉ truyền vào một phần tử, bạn cần truy cập phần tử đầu tiên bằng category[0].
Hàm close_window() sẽ xử lý việc này giúp bạn, đồng thời ghi log bản ghi để nghiên cứu thêm.
pandas với bí danh pd và json đã được nạp sẵn trong phiên làm việc, và mô hình có sẵn dưới tên pl.
Bài tập này là một phần của khóa học
Phân tích dữ liệu IoT bằng Python
Hướng dẫn bài tập
- Phân tích dict thành một pandas DataFrame bằng
DataFrame.from_records()với"timestamp"làm index vàcolslàm các cột. - Xác định category của bản ghi này bằng cách dùng
predict()từ đối tượng pipeline và gán kết quả chocategory. - Gọi
close_window()với DataFramedflà đối số thứ nhất vàcategorylà đối số thứ hai.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
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)