Закажи экспресс-аудит своего дела онлайн всего за 199 ₽
и получи рекомендации по улучшению - Жми сюда !

Имитация данных временных рядов с датчиков IoT за год с помощью Mimesis.

В этом руководстве вы узнаете процесс генерации ежедневных показаний температуры за год, имитирующих сезонную кривую, которая выглядит как реальная, — всё это вместе с метаданными на уровне устройства и готово к использованию на основе фреймворков с открытым исходным кодом.

Имитация данных временных рядов с датчиков IoT за год с помощью Mimesis.

# Введение

Имитация данных с датчиков Интернета вещей (IoT) , сбор которых в больших масштабах иным способом затруднителен, может представлять собой ценный подход для проведения экспериментальных анализов, реализации проектов и исследований. Однако для этого требуется гораздо больше, чем просто генерация случайных значений: необходима хронологическая последовательность событий, метаданные устройства и учет естественных колебаний окружающей среды или таких закономерностей, как сезонность. Mimesis — отличный инструмент с открытым исходным кодом для генерации фиктивных данных, а для решения этой задачи в программный код можно интегрировать немного математики: в этой статье показано, как это сделать.

В приведенном ниже пошаговом руководстве я покажу вам процесс генерации ежедневных показаний температуры за год, имитирующих сезонную кривую, которая выглядит как реальная, — все это вместе с метаданными на уровне устройства и готово к использованию на основе фреймворков с открытым исходным кодом.

# Пошаговое руководство

Для создания круглогодичного набора показаний датчиков IoT мы будем использовать три ключевые библиотеки Python: mimesis для генерации синтетических данных, pandas для работы со структурой временных рядов и NumPy для выполнения некоторых математических вычислений, позволяющих имитировать сезонные закономерности.

Следует помнить, что реальные наборы данных временных рядов IoT, как правило, привязаны к конкретному устройству. Способ эмуляции этого, с помощью Mimesis, заключается в использовании класса Generic provider и создании реалистичного профиля аппаратного устройства: нашего, так сказать, «вымышленного датчика». Это делается до создания фактических ежедневных показаний:

import pandas as pd import numpy as np from mimesis import Generic from mimesis.locales import Locale # Инициализация универсального поставщика для английского языка g = Generic(locale=Locale.EN, seed=101) # Генерация статических метаданных для нашего фиктивного IoT-устройства device_profile = { 'device_id': g.cryptographic.uuid(), 'location': g.address.city(), 'firmware_version': g.development.version(), 'ip_address': g.internet.ip_v4() } print(f»Устройство отслеживания: {device_profile['device_id']} расположено в {device_profile['location']}»)

Обратите внимание, что device_profile — это словарь, содержащий метаданные нашего вымышленного датчика: идентификатор, местоположение, версия прошивки и IP-адрес. Он будет выглядеть следующим образом:

Устройство слежения: e88b7591-31db-4e32-98dc-b35f94c662cd, расположенное в Парагулде.

Теперь, прежде чем строить временной ряд, мы определим уравнение, имитирующее сезонность, необходимую для отражения показаний температуры в течение года. Как вы, возможно, догадались, тригонометрические функции, такие как синус, идеально подходят для отражения такого круглогодичного паттерна, похожего на синусоидальную волну, поэтому наше уравнение будет основано на одной из них:

[
T(t) = T_{text{base}} + A cdot sinleft(frac{2pi (t — phi)}{365}right) + epsilon
[

Здесь (T(t)) обозначает значение температуры в день года (t), варьирующееся от 1 до 365. Остальные переменные являются компонентами синусоидальной волны, и, что важно, (epsilon) — это случайный шум, вносимый при использовании Mimesis: без последнего мы получили бы идеальную, гладкую синусоидальную волну, что было бы нереалистично, поскольку температура в реальном мире, конечно же, имеет свои кратковременные колебания!

Далее мы будем итерировать по всему году, день за днем, чтобы сгенерировать ежедневную временную шкалу. pandas будет управлять процессом создания данных, а mimesis.numeric будет использоваться для добавления не только упомянутого выше фонового шума, но и некоторой реалистичной задержки сети: распространенного явления в устройствах IoT. Все это добавляется к ранее определенному математическому базовому уравнению. Роль NumPy, тем временем, заключается в применении синусоидальной функции в процессе генерации.

# 1. Настройка математических констант для эмуляции суточной температуры T_base = 15.0 # Базовая температура в градусах Цельсия A = 12.0 # Колебается на 12 градусов вверх/вниз в течение года phase_shift = 80 # Сдвигаем синусоиду так, чтобы пик приходился на лето # 2. Создание 365-дневного временного ряда, начиная с 1 января 2026 г. dates = pd.date_range(start='2026-01-01', periods=365, freq='D') readings = [] # 3. Цикл по каждому дню и вычисление показаний для day_index, current_date в enumerate(dates): # Вычисление базовой линии сезонной кривой для этого конкретного дня seasonal_temp = T_base + A * np.sin(2 * np.pi * (day_index — phase_shift) / 365) # Использование Mimesis для внедрения случайной аппаратной дисперсии/шума (например, от -2,0 до 2,0 градусов) sensor_noise = g.numeric.float_number(start=-2.0, end=2.0, precision=2) # Расчет окончательной зарегистрированной температуры final_temp = round(seasonal_temp + sensor_noise, 2) # Составление ежедневной записи, смешивание статических метаданных с динамическим генерированием Mimesis 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(start=12, end=145) # Имитация колебаний силы/задержки сетевого соединения в течение дня }) # Преобразование в DataFrame для анализа df = pd.DataFrame(readings)

Как вы можете заметить, в процессе генерации временных рядов мы используем Mimesis дважды для каждого ежедневного значения временного ряда: один раз для шума датчика и один раз для задержки, которая имитирует ежедневные колебания сетевого соединения.

Пришло время посмотреть, как выглядит сгенерированный временной ряд IoT, и проверить сезонный характер, который мы пытались имитировать:

print(«— Показатели января (зима) —«) print(df[['timestamp', 'temperature_c', 'latency_ms']].head(3)) print(«n— Показатели июля (лето) —«) print(df[['timestamp', 'temperature_c', 'latency_ms']].iloc[180:183])

Выход:

— Показания за январь (зима) — метка времени температура_с задержка_мс 0 2026-01-01 3.54 61 1 2026-01-02 4.90 103 2 2026-01-03 3.18 140 — Показания за июль (лето) — метка времени температура_с задержка_мс 180 2026-06-30 28.84 116 181 2026-07-01 25.81 62 182 2026-07-02 26.08 97

Для более наглядного результата попробуйте вот это:

import matplotlib.pyplot as plt plt.figure(figsize=(12, 6)) plt.plot(df['timestamp'], df['temperature_c']) plt.xlabel('Дата') plt.ylabel('Температура (°C)') plt.title('Ежедневная температура в течение года') plt.grid(True) plt.tight_layout() plt.show()

Ежедневные показания температуры, полученные с помощью IoT-устройства Mimesis.

Поздравляем, если вы дочитали до этого места!

# Заключительные замечания

В этой статье мы показали, как использовать Mimesis в сочетании с pandas и NumPy для демонстрации генерации фиктивных, но убедительных временных рядов данных IoT. В частности, мы продемонстрировали процесс создания круглогодичного набора данных ежедневных показаний температуры, собранных с датчика IoT, включая метаданные, связанные с устройством, случайный шум для имитации реалистичных изменений температуры и задержку устройства. Эти данные могут быть использованы в последующих моделях прогнозирования или даже в решениях для создания информационных панелей: они, безусловно, смогут их обработать и помочь интерпретировать такие аспекты, как сезонные пики, типичные колебания показаний датчика и так далее.

Иван Паломарес Карраскоса — лидер, писатель, спикер и консультант в области искусственного интеллекта, машинного обучения, глубокого обучения и магистратуры. Он обучает и направляет других в применении ИИ в реальном мире.

Источник: www.kdnuggets.com

✅ Найденные теги: Временных, Данных, Датчиков, Имитация, новости, Рядов

Добавить комментарий

Новости других рубрик

Архив рубрики ~Лента новостей~: 1-битное изображение бонсай 4B, генерация изображений для локальных устройств Архив рубрики ~Лента новостей~: DuckDuckGo упрощает доступ к своей поисковой системе без использования искусственного интеллекта по мере роста трафика. Архив рубрики ~Лента новостей~: На пути к развитию навыков, востребованных в будущем, с помощью генеративного искусственного интеллекта. Архив рубрики ~Лента новостей~: Почему только 27% организаций готовы к AI Архив рубрики ~Лента новостей~: Будущее автоматизированной торговли: обзоры лучших форекс-роботов Архив рубрики ~Лента новостей~: Отвечая на призыв Папы Римского поставить человечество на первое место в мире искусственного интеллекта | Письмо Архив рубрики ~Лента новостей~: [Перевод] Откуда берутся молнии? Ответ на этот вопрос становится всё интереснее Архив рубрики ~Лента новостей~: Член городского совета пришел в ярость из-за запрета на использование камер наблюдения и угрожает объявить вне закона практически все современные технологии