File size: 2,194 Bytes
8e3dcf0 c9eaabd 8e3dcf0 c9eaabd fcc8ee6 c9eaabd fcc8ee6 c9eaabd fcc8ee6 c9eaabd fcc8ee6 c9eaabd fcc8ee6 c9eaabd fcc8ee6 c9eaabd fcc8ee6 c9eaabd fcc8ee6 c9eaabd fcc8ee6 c9eaabd fcc8ee6 1fefc77 c9eaabd fcc8ee6 c9eaabd fcc8ee6 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | # 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
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", value=25)
bmi_input = gr.Number(label="BMI", value=25)
children_input = gr.Number(label="Children", value=0)
sex_input = gr.Dropdown(
["male", "female"],
value="male",
label="Sex"
)
smoker_input = gr.Dropdown(
["yes", "no"],
value="no",
label="Smoker"
)
region_input = gr.Dropdown(
["southeast", "southwest", "northeast", "northwest"],
value="southeast",
label="Region"
)
model_output = gr.Textbox(label="Predicted Insurance Cost")
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()
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}"
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() |