| import os |
| import flask |
| import pandas as pd |
| import tensorflow as tf |
| from keras.models import load_model |
| import requests |
| import datetime |
| from sklearn import preprocessing |
| import numpy as np |
| from sklearn.preprocessing import StandardScaler |
| import json |
| import pickle |
| from sklearn.pipeline import Pipeline |
| from keras.optimizers import Adam |
|
|
| |
| app = flask.Flask(__name__) |
|
|
| |
| model = load_model('final_model.h5', compile=False) |
|
|
| |
| optimizer = Adam(learning_rate=0.001) |
| model.compile(optimizer=optimizer, loss='mean_squared_error') |
|
|
| holidays_tt = ["2020-01-01", |
| "2020-01-15", |
| "2020-01-26", |
| "2020-02-21", |
| "2020-03-10", |
| "2020-03-25", |
| "2020-04-02", |
| "2020-04-06", |
| "2020-04-10", |
| "2020-05-01", |
| "2020-05-07", |
| "2020-05-25", |
| "2020-06-23", |
| "2020-08-01", |
| "2020-08-03", |
| "2020-08-12", |
| "2020-08-15", |
| "2020-08-22", |
| "2020-08-30", |
| "2020-08-31", |
| "2020-10-02", |
| "2020-10-25", |
| "2020-10-30", |
| "2020-11-14", |
| "2020-11-30", |
| "2020-12-25" |
| ] |
| url = "https://api.openweathermap.org/data/2.5/weather?q=Bengaluru,in&APPID=b1a275b64af38a8f9823800a58345b93" |
|
|
| |
| @app.route("/", methods=["GET","POST"]) |
| def homepage(): |
| return flask.render_template("index.html") |
|
|
| |
| @app.route("/predict", methods=["POST"]) |
| def predict(): |
| dat = flask.request.form['date'] |
| time = flask.request.form['time'] |
| |
| |
| holiday = 1 if str(dat) in holidays_tt else 0 |
| |
| response = requests.get(url).json() |
| temp = float(response["main"]["temp"]) - 273.15 |
| temp_min = float(response["main"]["temp_min"]) - 283.15 |
| temp_max = float(response["main"]["temp_max"]) - 273.15 |
| pressure = response["main"]["pressure"] |
| humidity = response["main"]["humidity"] |
| |
| |
| date_time_obj = datetime.datetime.strptime(dat, '%Y-%m-%d') |
| week = datetime.date(date_time_obj.year, date_time_obj.month, date_time_obj.day).isocalendar()[1] |
| if week < 26: |
| week += 25 |
| |
| |
| hour = int(time[:-3]) |
| |
| |
| dic = { |
| "HSR Division": 105265, |
| "Koramangala Division": 63987, |
| "Indiranagar": 58830, |
| "Shivajinagar": 57437, |
| "Hebbal": 54301, |
| "Whitefield": 84428, |
| "Malleshwaram": 57107, |
| "Rajaji Nagara Division": 55250, |
| "Jayanagar": 56658, |
| "Jalahalli": 63391, |
| "Kengeri Division": 68087, |
| "R R NAGAR": 82848, |
| "Vidhanasoudha": 69057, |
| "Peenya Division": 96549 |
| } |
| |
| lb = preprocessing.LabelBinarizer() |
| lb.fit(list(dic.keys())) |
| lt = list(dic.keys()) |
| df = pd.DataFrame(lt) |
| divs = lb.transform(df) |
| divs = pd.DataFrame(divs) |
| |
| |
| week_col = [week] * 14 |
| temp_max_col = [temp_max] * 14 |
| temp_min_col = [temp_min] * 14 |
| holiday_col = [holiday] * 14 |
| pop_col = [dic[x] for x in lt] |
| hour_col = [hour] * 14 |
| |
| divs = pd.concat([pd.DataFrame(temp_max_col), divs], axis=1) |
| divs = pd.concat([pd.DataFrame(temp_min_col), divs], axis=1) |
| divs = pd.concat([pd.DataFrame(week_col), divs], axis=1) |
| divs = pd.concat([divs, pd.DataFrame(holiday_col)], axis=1) |
| divs = pd.concat([divs, pd.DataFrame(pop_col)], axis=1) |
| divs = pd.concat([divs, pd.DataFrame(hour_col)], axis=1) |
| |
| smol = pd.read_excel('smol.xlsx').iloc[:, 1:] |
| df = pd.DataFrame(np.concatenate((divs.values, smol.values), axis=0)) |
| |
| sc_X = StandardScaler() |
| df = sc_X.fit_transform(df) |
| |
| prd = model.predict(df) |
| prd = abs(prd[0:14]) |
| newprd = prd.tolist() |
| |
| return flask.render_template("index.html", data=newprd) |