Застосуйте модель до потоку даних
Тепер застосуймо вашу навчену Pipeline для машинного навчання до потокових даних і одразу класифікуймо значення.
Далі ви використаєте predict() для вхідних повідомлень, щоб визначити категорію.
Залежно від результату прогнозу ви виконаєте дію: зачинити вікна у вашому домі або ні.
Памʼятайте: категорія 1 означає гарну погоду, тоді як категорія 0 означає погану, холодну погоду.
Крім того, pipeline повертає масив прогнозів. Оскільки ви передаєте лише один елемент, потрібно звернутися до першого елемента за допомогою category[0].
Функція close_window() зробить це за вас і додатково збереже запис у журналі для подальшого аналізу.
pandas як pd і json уже завантажено в цю сесію для вас, а модель доступна як pl.
Ця вправа є частиною курсу
Аналіз даних IoT у Python
Інструкції до вправи
- Розберіть словник у pandas DataFrame за допомогою
DataFrame.from_records()з"timestamp"як індексом іcolsяк стовпцями. - Визначте категорію цього запису за допомогою
predict()з обʼєкта pipeline та запишіть результат у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)