File size: 3,060 Bytes
b12416c b14b5d1 b12416c e4f1b9d b12416c b14b5d1 6eaa5f2 1f5d511 2b7ce28 b12416c 1f5d511 8c3d09c b12416c |
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 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 |
# Import the libraries
import os
import uuid
import joblib
import json
import gradio as gr
import pandas as pd
from pathlib import Path
from huggingface_hub import CommitScheduler
log_file = Path("logs/") / f"data_{uuid.uuid4()}.json"
log_folder = log_file.parent
scheduler = CommitScheduler(
repo_id="insurace-charge-logs",
repo_type="dataset",
folder_path=log_folder,
path_in_repo="data",
every=2
)
insurace_charge_predictor = joblib.load('model.joblib')
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(['northwest', 'northeast', 'southeast', 'southwest'],label='Region')
model_output = gr.Label(label="charges")
def predict_insurance_charge(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 = insurace_charge_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 prediction[0]
demo = gr.Interface(
fn=predict_insurance_charge,
inputs=[age_input,
bmi_input,
children_input,
sex_input,
smoker_input,
region_input],
outputs=model_output,
title="Charge Amount Prediction",
description="HealthyLife Insurance Charge Prediction",
allow_flagging="auto",
concurrency_limit=8
)
demo.queue()
demo.launch()
# Define the predict function which will take features, convert to dataframe and make predictions using the saved model
# Run the training script placed in the same directory as app.py
# The training script will train and persist a linear regression
# model with the filename 'model.joblib'
# Load the freshly trained model from disk
# Prepare the logging functionality
# Define the predict function which will take features, convert to dataframe and make predictions using the saved model
# the functions runs when 'Submit' is clicked or when a API request is made
# While the prediction is made, log both the inputs and outputs to a log file
# While writing to the log file, ensure that the commit scheduler is locked to avoid parallel
# access
# Set up UI components for input and output
# Create the gradio interface, make title "HealthyLife Insurance Charge Prediction"
# Launch with a load balancer
#demo.queue()
#demo.launch(share=False)
|