Название | Синтез данных и цифровые двойники |
---|---|
Автор произведения | Джейд Картер |
Жанр | |
Серия | |
Издательство | |
Год выпуска | 2024 |
isbn |
import numpy as np
import matplotlib.pyplot as plt
from sklearn.ensemble import IsolationForest
from sklearn.preprocessing import StandardScaler
# Генерация синтетических данных для моделирования данных с сенсоров двигателя
np.random.seed(42)
n_samples = 1000
temperature = np.random.normal(loc=70, scale=5, size=n_samples) # Температура
vibrations = np.random.normal(loc=10, scale=2, size=n_samples) # Вибрации
pressure = np.random.normal(loc=100, scale=10, size=n_samples) # Давление
# Внесем несколько аномалий
temperature[995:] = np.random.normal(loc=90, scale=1, size=5)
vibrations[995:] = np.random.normal(loc=20, scale=1, size=5)
pressure[995:] = np.random.normal(loc=140, scale=1, size=5)
# Создание DataFrame
data = pd.DataFrame({'Temperature': temperature, 'Vibrations': vibrations, 'Pressure': pressure})
# Стандартизация данных для улучшения работы модели
scaler = StandardScaler()
data_scaled = scaler.fit_transform(data)
# Используем Isolation Forest для обнаружения аномалий
model = IsolationForest(contamination=0.01, random_state=42)
data['Anomaly'] = model.fit_predict(data_scaled)
# Аномалии отмечаются как -1
anomalies = data[data['Anomaly'] == -1]
# Визуализация данных
plt.figure(figsize=(10, 6))
plt.scatter(data.index, data['Temperature'], c='blue', label='Temperature')
plt.scatter(data.index, data['Vibrations'], c='green', label='Vibrations')
plt.scatter(data.index, data['Pressure'], c='orange', label='Pressure')
# Выделение аномалий
plt.scatter(anomalies.index, anomalies['Temperature'], c='red', label='Anomalies', marker='x')
plt.title("Engine Sensor Data with Anomaly Detection")
plt.xlabel("Sample Index")
plt.ylabel("Sensor Readings")
plt.legend(loc='best')
plt.show()
# Вывод информации об аномалиях
print("Anomalies detected:")
print(anomalies)
```
Описание кода:
1. Синтетические данные: Мы генерируем данные, которые представляют параметры, собираемые с сенсоров на двигателе: температуру, вибрации и давление. В конце датасета специально добавляем аномалии для тестирования.
2. Стандартизация данных: Для того чтобы алгоритм машинного обучения работал более эффективно, мы стандартизируем данные с помощью `StandardScaler`.
3. Модель Isolation Forest: Мы используем алгоритм Isolation Forest для обнаружения аномалий. Он предназначен для поиска редких или необычных точек в данных. В нашем случае мы можем обнаружить моменты, когда параметры двигателя начинают отклоняться от нормы, что может указывать на будущую поломку.
4. Визуализация: Рисуем график, который показывает нормальные данные и выделяет аномалии. Это позволяет визуально увидеть моменты, когда сенсоры фиксируют ненормальные значения.
Результат:
Модель определит аномалии в данных сенсоров (например, резкое повышение температуры, вибраций или давления). Выявленные аномалии могут быть сигналом о потенциальных неисправностях двигателя, что позволяет принимать меры заранее, до наступления поломки.
Конец ознакомительного фрагмента.
Текст предоставлен ООО «Литрес».
Прочитайте эту книгу целиком, купив полную легальную версию на Литрес.
Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.