joyson072 commited on
Commit
fa2f87f
1 Parent(s): 4360266

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +83 -0
app.py ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import pandas as pd
2
+ import matplotlib.pyplot as plt
3
+ import numpy as np
4
+ from keras.models import Sequential
5
+ from sklearn.preprocessing import MinMaxScaler
6
+ from keras.layers.core import Dense,Dropout,Activation
7
+ from keras.layers.recurrent import LSTM
8
+ import gradio as gr
9
+
10
+ df_data=pd.read_csv("C:/Users/Joyson/Downloads/Kaggle datasets/jena_climate_2009_2016.csv/jena_climate_2009_2016.csv",parse_dates=["Date Time"],index_col=0)
11
+ df=pd.DataFrame(df_data.loc[:,"T (degC)"])
12
+ df_fil=df["T (degC)"].resample("D").max()
13
+ df1=pd.DataFrame(df_fil)
14
+ min_max_scaler=MinMaxScaler(feature_range=(0,1))
15
+ dataset=min_max_scaler.fit_transform(df1['T (degC)'].values.reshape(-1,1))
16
+
17
+ train_size=int(len(dataset)*0.7)
18
+
19
+ test_size=len(dataset)-train_size
20
+
21
+ train=dataset[0:train_size,:]
22
+
23
+ test=dataset[train_size:len(dataset),:]
24
+
25
+ def create_dataset(dataset,time_step=6):
26
+ x_ind,y_dep =[],[]
27
+ for i in range(len(dataset)-time_step-1):
28
+ a=dataset[i:(i+time_step),0]
29
+ x_ind.append(a)
30
+ y_dep.append(dataset[i+time_step,0])
31
+ return np.array(x_ind),np.array(y_dep)
32
+ x_train,y_train=create_dataset(train,time_step=6)
33
+
34
+ x_test,y_test=create_dataset(test,time_step=6)
35
+
36
+ x_train=np.reshape(x_train,(x_train.shape[0],1,x_train.shape[1]))
37
+
38
+ x_test=np.reshape(x_test,(x_test.shape[0],1,x_test.shape[1]))
39
+
40
+ time_step=6
41
+ model_lstm=Sequential()
42
+
43
+ model_lstm.add(LSTM(20,input_shape=(1,time_step)))
44
+ model_lstm.add(Dense(1))
45
+
46
+
47
+ model_lstm.compile(loss="mean_squared_error",optimizer='adam')
48
+
49
+ model_lstm.fit(x_train,y_train,epochs=150)
50
+ y_pred=model_lstm.predict(x_test)
51
+
52
+ y_pred=min_max_scaler.inverse_transform(y_pred)
53
+ df2=pd.DataFrame(df_fil)
54
+
55
+ def forecast_temp(no_of_samples):
56
+ a= int(no_of_samples)*6
57
+ new_data = df2[-(a+1):-1]
58
+ forecast_dataset=np.array(new_data)
59
+ forecast_dataset=forecast_dataset.reshape(-1, 1)
60
+ X=min_max_scaler.transform(forecast_dataset)
61
+ TimeSteps=int(6)
62
+ NumFeatures=int(1)
63
+ no_of_samples=int(no_of_samples)
64
+ X=X.reshape(no_of_samples,NumFeatures,TimeSteps)
65
+ predicted_temp = model_lstm.predict(X)
66
+ predicted_temp = min_max_scaler.inverse_transform(predicted_temp)
67
+ predict_df=pd.DataFrame(list(map(lambda x: x[0], predicted_temp)),columns=["predictions"])
68
+ predict_df.reset_index(inplace=True)
69
+ predict_df = predict_df.rename(columns = {'index':'DAYS'})
70
+ plt.figure(figsize=(15, 6))
71
+ range_history = len(new_data)
72
+ range_future = list(range(range_history, range_history +len(predicted_temp)))
73
+ plt.plot(np.arange(range_history), np.array(new_data),label='History')
74
+ plt.plot(range_future, np.array(predicted_temp),label='Forecasted for RNN')
75
+ plt.legend(loc='upper right')
76
+ plt.xlabel('Time step (hour)')
77
+ plt.ylabel('Stock Price')
78
+ return predict_df,plt.gcf()
79
+
80
+ interface = gr.Interface(fn = forecast_temp,
81
+ inputs = gr.inputs.Slider(minimum=0, maximum=50, step=1, default=5, label="Number of Sample to Predict"),
82
+ outputs = ["dataframe","plot"],description="Max Temp Prediction of a day")
83
+ interface.launch()