Long Short Term Memory
Navya Aggarwal
Code here
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from tensorflow import keras
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import LSTM
df = pd.read_csv('monthly_milk_production.csv'
index_col='Date',
parse_dates=True)
df.index.freq = 'MS'
df.head()
# Plotting graph b/w production and date
df.plot(figsize=(12, 6))
from statsmodels.tsa.seasonal import seasonal_decompose
results = seasonal_decompose(df['Production'])
results.plot()
train = df.iloc[:156]
test = df.iloc[156:]
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
scaler.fit(train)
scaled_train = scaler.transform(train)
scaled_test = scaler.transform(test)
from keras.preprocessing.sequence import TimeseriesGenerator
n_input = 3
n_features = 1
generator = TimeseriesGenerator(scaled_train,scaled_train,length=n_input,batch_size=1)
X, y = generator[0]
print(f'Given the Array:
{X.flatten()}')
print(f'Predict this y:
{y}')
# We do the same thing, but now instead for 12 months
n_input = 12
generator = TimeseriesGenerator(scaled_train, scaled_train,length=n_input,batch_size=1)
# define model
model = Sequential()
model.add(LSTM(100, activation='relu',input_shape=(n_input, n_features)))
model.add(Dense(1))
model.compile(optimizer='adam', loss='mse')
model.summary()
model.fit(generator, epochs=5)