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)