Spaces:
Sleeping
Sleeping
import joblib | |
import gradio as gr | |
import pandas as pd | |
from models import HealthInsurance | |
def load_data(): | |
global _model | |
global _column_transformer | |
global _bins_annual_premium_type | |
_model = joblib.load(filename = 'parameters/random_forrest.gz') | |
_column_transformer = joblib.load(filename = 'parameters/column_transformer.joblib') | |
_bins_annual_premium_type = joblib.load(filename = 'parameters/bins_annual_premium_type.joblib') | |
def predict(df): | |
health_insurance = HealthInsurance(_model,_column_transformer, | |
_bins_annual_premium_type) | |
df_predicted = health_insurance.predict(df) | |
return df_predicted[['score','previously_insured', | |
'annual_premium','vintage','gender', | |
'age','region_code','policy_sales_channel', | |
'driving_license','vehicle_age', | |
'vehicle_damage']] | |
def create_input_table(): | |
return gr.Dataframe(headers = ['previously_insured', | |
'annual_premium','vintage','gender', | |
'age','region_code','policy_sales_channel', | |
'driving_license','vehicle_age', | |
'vehicle_damage'], | |
datatype = ['number','number','number','str','number', | |
'number','number','number','str','str'], | |
row_count= 1, | |
col_count= (10,'fixed'), | |
type = 'pandas', | |
label = 'Input') | |
def create_output_table(): | |
return gr.Dataframe(headers = ['score','previously_insured', | |
'annual_premium','vintage','gender', | |
'age','region_code','policy_sales_channel', | |
'driving_license','vehicle_age', | |
'vehicle_damage'], | |
type = 'pandas', | |
label = 'Output', | |
wrap = True, | |
interactive =False) | |
def create_file_object(): | |
return gr.File(label = 'File upload', | |
type = 'bytes') | |
def convert_file_to_pandas(file): | |
df = pd.read_excel(io = file) | |
return df | |
def build_interface(): | |
with gr.Blocks() as interface: | |
file_object = create_file_object() | |
input_table = create_input_table() | |
output_table = create_output_table() | |
greet_btn = gr.Button("Submit") | |
greet_btn.click(fn=predict, inputs=input_table, outputs=output_table) | |
file_object.change(fn = convert_file_to_pandas, | |
inputs = file_object, | |
outputs = input_table) | |
interface.launch() | |
if __name__ == "__main__": | |
load_data() | |
build_interface() |