mennabar4a8's picture
Update app.py
cee6701 verified
Raw
History Blame
2.16 kB
# Importing libraries
import os
import uuid
import joblib
import json
import gradio as gr
import pandas as pd
from huggingface_hub import CommitScheduler
from pathlib import Path
# logging
log_file = Path("logs/") / f"data_{uuid.uuid4()}.json"
log_folder = log_file.parent
scheduler = CommitScheduler(
repo_id="Insurance_Charge_Prediction_Project",
repo_type="dataset",
folder_path=log_folder,
path_in_repo="data",
every=2
)
charges_predictor = joblib.load("model.joblib")
# Inputs
age_input = gr.Number(label="Age")
bmi_input = gr.Number(label="BMI")
children_input = gr.Number(label="Children")
sex_input = gr.Dropdown(
["male", "female"],
label="Sex"
)
smoker_input = gr.Dropdown(
["yes", "no"],
label="Smoker"
)
region_input = gr.Dropdown(
["southeast", "southwest", "northeast", "northwest"],
label="Region"
)
model_output = gr.Textbox(label="Predicted Insurance Cost")
# prediction function
def predict_charges(age, bmi, children, sex, smoker, region):
sample = {
"age": age,
"bmi": bmi,
"children": children,
"sex": sex,
"smoker": smoker,
"region": region
}
data_point = pd.DataFrame([sample])
prediction = charges_predictor.predict(data_point).tolist()
# logging
with scheduler.lock:
with log_file.open("a") as f:
f.write(json.dumps({
"age": age,
"bmi": bmi,
"children": children,
"sex": sex,
"smoker": smoker,
"region": region,
"prediction": prediction[0]
}))
f.write("\n")
return f"${prediction[0]:,.2f}"
# UI
demo = gr.Interface(
fn=predict_charges,
inputs=[
age_input,
bmi_input,
children_input,
sex_input,
smoker_input,
region_input
],
outputs=model_output,
title="HealthyLife Insurance Charge Prediction",
description="Predict the insurance medical charges based on patient information",
flagging_mode="manual",
concurrency_limit=8
)
demo.queue()
demo.launch()