martinnnuez's picture
Update app.py
ef93412
raw
history blame contribute delete
2.47 kB
import pickle
import pandas as pd
import numpy as np
import xgboost as xgb
import gradio as gr
import pathlib
#plt = platform.system()
#if plt == 'Linux': pathlib.WindowsPath = pathlib.PosixPath
model_path = "model.None"
model = xgb.Booster()
model.load_model(model_path)
dv_path = "dv.bin"
with open(dv_path, 'rb') as f_out:
dv = pickle.load(f_out)
scaler_path = "scaler.bin"
with open(scaler_path, 'rb') as f_out:
scaler = pickle.load(f_out)
def preprocess(data):
"""Preprocessing of the data"""
# turn json input to dataframe
data = pd.DataFrame([data])
# define numerical and categorical features
numerical = ["X1", "X2", "X3", "X4", "X5", "X7"]
categorical = ["X6", "X8"]
# preprocess numerical features
X_num = scaler.transform(data[numerical])
# preprocess categorical features
data[categorical] = data[categorical].astype("string")
X_dicts = data[categorical].to_dict(orient="records")
X_cat = dv.transform(X_dicts)
# concatenate both
X = np.concatenate((X_num, X_cat), axis=1)
return X
def predict(X):
"""make predictions"""
pred = model.predict(X)
print('prediction', pred[0])
return float(pred[0])
def main(X1,X2,X3,X4,X5,X6,X7,X8):
"""request input, preprocess it and make prediction"""
input_data = {
"X1": X1,
"X2": X2,
"X3": X3,
"X4": X4,
"X5": X5,
"X6": X6,
"X7": X7,
"X8": X8
}
features = preprocess(input_data)
features_2 = xgb.DMatrix(features)
pred = predict(features_2)
result = {'heat load': pred}
return pred
def classify_image(img):
pred,idx,probs = learn.predict(img)
return dict(zip(categories,map(float,probs)))
#create input and output objects
#input
input1 = gr.inputs.Number()
input2 = gr.inputs.Number()
input3 = gr.inputs.Number()
input4 = gr.inputs.Number()
input5 = gr.inputs.Number()
input6 = gr.inputs.Number()
input7 = gr.inputs.Number()
input8 = gr.inputs.Number()
#output object
output = gr.outputs.Textbox()
intf = gr.Interface(title = "Energy Efficiency",
description = "The objective of this project is to predict the Heating Load based on various building features.",
fn=main,
inputs=[input1,input2,input3,input4,input5,input6,input7,input8],
outputs=[output],
live=True,
enable_queue=True
)
intf.launch()