File size: 2,162 Bytes
8e3dcf0 c9eaabd cee6701 c9eaabd 8e3dcf0 c9eaabd cee6701 c9eaabd cee6701 c9eaabd cee6701 c9eaabd cee6701 c9eaabd cee6701 c9eaabd cee6701 c9eaabd cee6701 c9eaabd cee6701 c9eaabd cee6701 c9eaabd cee6701 1fefc77 c9eaabd cee6701 c9eaabd cee6701 | 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 106 107 108 | # 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() |