Model toepassen op datastroom
Laten we je getrainde Machine Learning-pijplijn nu toepassen op streaming data en de waarden direct categoriseren.
Gebruik daarna predict() op de binnenkomende berichten om de categorie te bepalen.
Op basis van het resultaat van de voorspelling onderneem je actie en sluit je de ramen in je huis (of niet).
Onthoud dat categorie 1 goed weer betekent, terwijl categorie 0 slecht, koud weer aangeeft.
Bovendien geeft de pijplijn een array met voorspellingen terug. Omdat je slechts één element hebt doorgegeven, moet je het eerste element benaderen met category[0].
De functie close_window() handelt dit voor je af en logt bovendien het record voor verder onderzoek.
pandas als pd en json zijn al voor je ingeladen in de sessie, en het model is beschikbaar als pl.
Deze oefening maakt deel uit van de cursus
IoT-gegevens analyseren in Python
Oefeninstructies
- Parseer de dictionary naar een pandas DataFrame met
DataFrame.from_records()met"timestamp"als index encolsals kolommen. - Bepaal de categorie van dit record met
predict()van het pipeline-object en ken het resultaat toe aancategory. - Roep
close_window()aan met de DataFramedfals eerste argument encategoryals tweede argument.
Interactieve oefening met praktijkervaring
Probeer deze oefening door deze voorbeeldcode aan te vullen.
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)