Modell auf Datenstrom anwenden
Wenden wir jetzt deine trainierte Machine-Learning-Pipeline auf Streaming-Daten an und kategorisieren die Werte sofort.
Du verwendest dann predict() auf den eingehenden Nachrichten, um die Kategorie zu bestimmen.
Abhängig vom Ergebnis der Vorhersage ergreifst du Maßnahmen und schließt die Fenster in deinem Haus (oder eben nicht).
Denk daran: Kategorie 1 bedeutet gutes Wetter, Kategorie 0 steht für schlechtes, kaltes Wetter.
Außerdem gibt die Pipeline ein Array von Vorhersagen zurück. Da du nur ein Element übergeben hast, musst du mit category[0] auf das erste Element zugreifen.
Die Funktion close_window() übernimmt das für dich und protokolliert den Datensatz zusätzlich für eine spätere Auswertung.
pandas als pd und json wurden bereits für dich in die Session geladen, und das Modell ist als pl verfügbar.
Diese Übung ist Teil des Kurses
<Kurs>IoT-Daten in Python analysieren</Kurs>Übungsanweisungen
- Parse das Dictionary in ein pandas-DataFrame mit
DataFrame.from_records(), verwende"timestamp"als Index undcolsals Spalten. - Bestimme die Kategorie dieses Datensatzes mit
predict()aus dem Pipeline-Objekt und weise das Ergebniscategoryzu. - Rufe
close_window()mit dem DataFramedfals erstem Argument undcategoryals zweitem Argument auf.
Interaktive praktische Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
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)