Применение модели к потоку данных
Теперь применим обученный конвейер машинного обучения к потоковым данным и сразу же определим категорию каждого значения.
Вы будете использовать predict() для входящих сообщений, чтобы определить категорию.
На основе результата предсказания вы примете решение: закрыть окна в доме или нет.
Напомним, что категория 1 означает хорошую погоду, а категория 0 — плохую, холодную.
Кроме того, конвейер возвращает массив предсказаний. Поскольку вы передали только один элемент, обращайтесь к первому элементу с помощью category[0].
Функция close_window() выполнит это за вас и дополнительно сохранит запись для дальнейшего изучения.
pandas в виде pd и json уже загружены в сессии, а модель доступна как pl.
Это упражнение является частью курса
Анализ данных Интернета вещей на Python
Инструкции к упражнению
- Преобразуйте словарь в DataFrame pandas с помощью
DataFrame.from_records(), указав"timestamp"в качестве индекса иcolsв качестве столбцов. - Определите категорию записи с помощью
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)