Spaces:
Runtime error
Runtime error
import pandas as pd | |
import matplotlib.pyplot as plt | |
import numpy as np | |
from keras.models import Sequential | |
from sklearn.preprocessing import MinMaxScaler | |
from keras.layers.core import Dense,Dropout,Activation | |
from keras.layers.recurrent import LSTM | |
import gradio as gr | |
df_data=pd.read_csv("jena_climate_2009_2016.csv",parse_dates=["Date Time"],index_col=0) | |
df=pd.DataFrame(df_data.loc[:,"T (degC)"]) | |
df_fil=df["T (degC)"].resample("D").max() | |
df1=pd.DataFrame(df_fil) | |
min_max_scaler=MinMaxScaler(feature_range=(0,1)) | |
dataset=min_max_scaler.fit_transform(df1['T (degC)'].values.reshape(-1,1)) | |
train_size=int(len(dataset)*0.7) | |
test_size=len(dataset)-train_size | |
train=dataset[0:train_size,:] | |
test=dataset[train_size:len(dataset),:] | |
def create_dataset(dataset,time_step=6): | |
x_ind,y_dep =[],[] | |
for i in range(len(dataset)-time_step-1): | |
a=dataset[i:(i+time_step),0] | |
x_ind.append(a) | |
y_dep.append(dataset[i+time_step,0]) | |
return np.array(x_ind),np.array(y_dep) | |
x_train,y_train=create_dataset(train,time_step=6) | |
x_test,y_test=create_dataset(test,time_step=6) | |
x_train=np.reshape(x_train,(x_train.shape[0],1,x_train.shape[1])) | |
x_test=np.reshape(x_test,(x_test.shape[0],1,x_test.shape[1])) | |
time_step=6 | |
model_lstm=Sequential() | |
model_lstm.add(LSTM(20,input_shape=(1,time_step))) | |
model_lstm.add(Dense(1)) | |
model_lstm.compile(loss="mean_squared_error",optimizer='adam') | |
model_lstm.fit(x_train,y_train,epochs=150) | |
y_pred=model_lstm.predict(x_test) | |
y_pred=min_max_scaler.inverse_transform(y_pred) | |
df2=pd.DataFrame(df_fil) | |
def forecast_temp(no_of_samples): | |
a= int(no_of_samples)*6 | |
new_data = df2[-(a+1):-1] | |
forecast_dataset=np.array(new_data) | |
forecast_dataset=forecast_dataset.reshape(-1, 1) | |
X=min_max_scaler.transform(forecast_dataset) | |
TimeSteps=int(6) | |
NumFeatures=int(1) | |
no_of_samples=int(no_of_samples) | |
X=X.reshape(no_of_samples,NumFeatures,TimeSteps) | |
predicted_temp = model_lstm.predict(X) | |
predicted_temp = min_max_scaler.inverse_transform(predicted_temp) | |
predict_df=pd.DataFrame(list(map(lambda x: x[0], predicted_temp)),columns=["predictions"]) | |
predict_df.reset_index(inplace=True) | |
predict_df = predict_df.rename(columns = {'index':'DAYS'}) | |
plt.figure(figsize=(15, 6)) | |
range_history = len(new_data) | |
range_future = list(range(range_history, range_history +len(predicted_temp))) | |
plt.plot(np.arange(range_history), np.array(new_data),label='History') | |
plt.plot(range_future, np.array(predicted_temp),label='Forecasted for RNN') | |
plt.legend(loc='upper right') | |
plt.xlabel('Time step (hour)') | |
plt.ylabel('Stock Price') | |
return predict_df,plt.gcf() | |
interface = gr.Interface(fn = forecast_temp, | |
inputs = gr.inputs.Slider(minimum=0, maximum=50, step=1, default=5, label="Number of Sample to Predict"), | |
outputs = ["dataframe","plot"],description="Max Temp Prediction of next day") | |
interface.launch() |