Ein Jahr voller IoT-Sensor-Zeitreihendaten mit Mimesis verspotten

# Einführung

Verspottung Sensordaten für das Web der Dinge (IoT). die andernfalls schwer in großem Maßstab zu erfassen wären, können einen wertvollen Ansatz zur Erleichterung experimenteller Analysen, Projekte und Studien darstellen. Es erfordert jedoch viel mehr als die zufällige Generierung von Werten: Es erfordert eine chronologische Zeitleiste, Gerätemetadaten und die Notwendigkeit, natürliche Umweltschwankungen oder Muster wie Saisonalität widerzuspiegeln. Mimesis ist ein hervorragendes Open-Supply-Instrument zur Generierung gefälschter Daten, während eine Prise Mathematik in eine codebasierte Lösung integriert werden kann, um mit letzteren umzugehen: Dieser Artikel zeigt, wie.

Mit der folgenden Schritt-für-Schritt-Anleitung werde ich Sie durch den Prozess der Generierung täglicher Temperaturmesswerte für ein Jahr führen und eine saisonale Kurve nachahmen, die echt aussieht – alles zusammen mit Metadaten auf Geräteebene und bereit für die Erstellung auf Foundation von Open-Supply-Frameworks.

# Schritt-für-Schritt-Anleitung

Wir werden uns auf drei wichtige Python-Bibliotheken stützen, um unsere ganzjährigen IoT-Sensormesswerte zu erstellen: mimesis zur synthetischen Datengenerierung, Pandas für den Umgang mit dem Gerüst der Zeitreihe und NumPy für etwas Mathe, das uns dazu bringt, saisonale Muster nachzuahmen.

Bedenken Sie, dass reale IoT-Zeitreihendatensätze im Allgemeinen an ein konkretes Gerät gebunden sind. Die Möglichkeit, dies mit Hilfe von Mimesis zu emulieren, ist die Verwendung von Generic Supplier-Klasse und generiert ein realistisches {Hardware}-Geräteprofil: sozusagen unser „fiktiver Sensor“. Dies geschieht vor der Erstellung der eigentlichen Tagesablesungen:

import pandas as pd
import numpy as np
from mimesis import Generic
from mimesis.locales import Locale

# Initializing a generic supplier for English language
g = Generic(locale=Locale.EN, seed=101)

# Producing static metadata for our mock IoT machine
device_profile = {
    'device_id': g.cryptographic.uuid(),
    'location': g.tackle.metropolis(),
    'firmware_version': g.growth.model(),
    'ip_address': g.web.ip_v4()
}

print(f"Monitoring System: {device_profile('device_id')} positioned in {device_profile('location')}")

Beachten Sie, dass device_profile ist ein Wörterbuch, das unsere fiktiven Sensormetadaten enthält: Kennung, Standort, Firmware-Model und IP-Adresse. Es wird so aussehen:

Monitoring System: e88b7591-31db-4e32-98dc-b35f94c662cd positioned in Paragould

Bevor wir nun die Zeitreihe erstellen, definieren wir eine Gleichung, um das Saisonalitätsmuster zu emulieren, das zur Darstellung der Temperaturmesswerte über ein Jahr hinweg erforderlich ist. Wie Sie vielleicht schon erraten haben, eignen sich trigonometrische Funktionen wie der Sinus perfekt, um ein ganzjähriges Muster widerzuspiegeln, das wie eine Sinuswelle aussieht. Daher basiert unsere Gleichung auf einer:

(
T

Hier steht (T

Als nächstes iterieren wir Tag für Tag über das ganze Jahr, um die tägliche Zeitleiste zu erstellen. Pandas werden den Datenerstellungsprozess steuern, während mimesis.numeric wird verwendet, um nicht nur das oben genannte Umgebungsgeräusch, sondern auch eine realistische Netzwerklatenz einzuspeisen: ein häufiger Aspekt bei IoT-Geräten. All dies geht über die zuvor definierte mathematische Grundgleichung hinaus. Die Rolle von NumPy besteht unterdessen darin, die Sinusfunktion als Teil des Generierungsprozesses anzuwenden.

# 1. Establishing mathematical constants for emulating each day temperature
T_base = 15.0       # Base temperature in Celsius
A = 12.0            # Fluctuates by 12 levels up/down all year long
phase_shift = 80    # Shift the sine wave so the height falls in the summertime

# 2. Creating the 365-day time sequence beginning Jan 1, 2026
dates = pd.date_range(begin="2026-01-01", durations=365, freq='D')

readings = ()

# 3. Looping by means of every day and calculating the readings
for day_index, current_date in enumerate(dates):
    
    # Calculating the seasonal curve baseline for this particular day
    seasonal_temp = T_base + A * np.sin(2 * np.pi * (day_index - phase_shift) / 365)
    
    # Utilizing Mimesis to inject random {hardware} variance/noise (e.g., -2.0 to 2.0 levels)
    sensor_noise = g.numeric.float_number(begin=-2.0, finish=2.0, precision=2)
    
    # Calculating ultimate recorded temperature
    final_temp = spherical(seasonal_temp + sensor_noise, 2)
    
    # Compiling the each day document, mixing static metadata with dynamic Mimesis era
    readings.append({
        'timestamp': current_date,
        'device_id': device_profile('device_id'),
        'location': device_profile('location'),
        'temperature_c': final_temp,
        'latency_ms': g.numeric.integer_number(begin=12, finish=145)       # Mocking community connection power/latency fluctuations per day
    })

# Changing to a DataFrame for evaluation
df = pd.DataFrame(readings)

Wie Sie sehen können, verwenden wir Mimesis im Zeitreihengenerierungsprozess für jede tägliche Instanz der Zeitreihe zweimal: einmal für das Sensorrauschen und einmal für die Latenz, wobei letztere täglich Schwankungen der Netzwerkverbindung nachahmt.

Es ist an der Zeit, zu sehen, wie die generierten IoT-Zeitreihen aussehen, und das saisonale Muster zu überprüfen, das wir nachzuahmen versucht haben:

print("--- January (Winter) Readings ---")
print(df(('timestamp', 'temperature_c', 'latency_ms')).head(3))

print("n--- July (Summer season) Readings ---")
print(df(('timestamp', 'temperature_c', 'latency_ms')).iloc(180:183))

Ausgabe:

--- January (Winter) Readings ---
   timestamp  temperature_c  latency_ms
0 2026-01-01           3.54          61
1 2026-01-02           4.90         103
2 2026-01-03           3.18         140

--- July (Summer season) Readings ---
     timestamp  temperature_c  latency_ms
180 2026-06-30          28.84         116
181 2026-07-01          25.81          62
182 2026-07-02          26.08          97

Versuchen Sie für ein visuelleres Ergebnis Folgendes:

import matplotlib.pyplot as plt

plt.determine(figsize=(12, 6))
plt.plot(df('timestamp'), df('temperature_c'))
plt.xlabel('Date')
plt.ylabel('Temperature (°C)')
plt.title('Every day Temperature All through the Yr')
plt.grid(True)
plt.tight_layout()
plt.present()

Tägliche Temperatur-IoT-Messwerte, generiert mit Mimesis

Intestine gemacht, wenn du es bis hierher geschafft hast!

# Abschließende Bemerkungen

In diesem Artikel haben wir gezeigt, wie man Mimesis in Kombination mit Pandas und NumPy nutzt, um die Generierung gefälschter, aber überzeugender IoT-Zeitreihendaten zu veranschaulichen. Insbesondere haben wir den Prozess der Erstellung eines ganzjährigen Datensatzes täglicher Temperaturmesswerte veranschaulicht, die von einem IoT-Sensor erfasst werden, einschließlich gerätebezogener Metadaten, zufälligem Rauschen zur Emulation realistischer Temperaturänderungen und Gerätelatenz. Diese Daten können von nachgelagerten Prognosemodellen oder sogar Dashboard-Lösungen genutzt werden: Sie werden sie mit Sicherheit aufnehmen und bei der Interpretation von Aspekten wie saisonalen Spitzenwerten, häufigen Sensorschwankungen usw. helfen.

Iván Palomares Carrascosa ist ein führender Autor, Redner und Berater in den Bereichen KI, maschinelles Lernen, Deep Studying und LLMs. Er schult und leitet andere darin, KI in der realen Welt zu nutzen.

Von admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert