Spaces:
Runtime error
Runtime error
Create app.py
Browse files
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()
|