import numpy as np import pandas as pd from sklearn.preprocessing import MinMaxScaler from tensorflow.keras.models import Sequential from tensorflow.keras.layers import LSTM, Dense from tensorflow.keras.optimizers import Adam # Load energy generation dataset (ensure 'energy_data.csv' is in the /data folder) data = pd.read_csv('data/energy_data.csv') # Replace with your actual filename if different energy_data = data['energy_generation'].values.reshape(-1, 1) # Normalize data scaler = MinMaxScaler(feature_range=(0, 1)) energy_data = scaler.fit_transform(energy_data) # Prepare data for LSTM X, y = [], [] for i in range(60, len(energy_data)): X.append(energy_data[i-60:i, 0]) y.append(energy_data[i, 0]) X, y = np.array(X), np.array(y) X = X.reshape((X.shape[0], X.shape[1], 1)) # Define LSTM model model = Sequential() model.add(LSTM(units=50, return_sequences=True, input_shape=(X.shape[1], 1))) model.add(LSTM(units=50, return_sequences=False)) model.add(Dense(units=1)) # Compile and train model.compile(optimizer=Adam(), loss='mean_squared_error') model.fit(X, y, epochs=10, batch_size=32) # Save trained model model.save('models/lstm_energy_model.h5') print("✅ LSTM model trained and saved to models/lstm_energy_model.h5")