Train DNN Using Normal Cluster Behaviour Data
Train DNN Using Normal Cluster Behaviour Data
import pandas as pd
from sklearn.mixture import GaussianMixture
from sklearn.preprocessing import MinMaxScaler
from tensorflow.keras.models import Model
from tensorflow.keras.layers import Input, Dense
from tensorflow.keras.optimizers import Adam
import matplotlib.pyplot as plt
# Scale Data
scaler = MinMaxScaler()
X_scaled = scaler.fit_transform(X)
input_layer = Input(shape=(input_dim,))
encoded = Dense(8, activation='relu')(input_layer)
encoded = Dense(encoding_dim, activation='relu')(encoded)
decoded = Dense(8, activation='relu')(encoded)
decoded = Dense(input_dim, activation='linear')(decoded)
# Identify Anomalies
df['anomaly'] = df['reconstruction_error'] > threshold
# Visualize Anomalies
plt.figure(figsize=(12, 6))
plt.plot(df.index, df['reading'], label='Energy Consumption', color='blue')
plt.scatter(df[df['anomaly']].index, df[df['anomaly']]['reading'], color='red',
label='Anomalies')
plt.legend()
plt.show()
# Save anomalies
df.to_csv('detected_anomalies.csv', index=False)