# 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()