File size: 2,967 Bytes
7ba7074
 
 
 
 
 
 
d52d7a5
7ba7074
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d52d7a5
7ba7074
 
 
 
 
 
 
 
d52d7a5
7ba7074
d52d7a5
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
from warnings import filterwarnings
filterwarnings('ignore')

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

# Configure the logging functionality
log_file = Path("logs/") / f"data_{uuid.uuid4()}.json"
log_folder = log_file.parent

repo_id = "operand-logs"

# Create a commit scheduler
scheduler = CommitScheduler(
    repo_id=repo_id,
    repo_type="dataset",
    folder_path=log_folder,
    path_in_repo="data",
    every=2
)

# # Load the saved model
# #insurance_charge_predictor = joblib.load('model.joblib')

# # Define the input features

# #numeric_features = ['age', 'bmi', 'children']
# #categorical_features = ['sex', 'smoker', 'region']

# age_input = gr.Number(label="Age")
# bmi_input = gr.Number(label="BMI")
# children_input = gr.Number(label="Children")

# # sex: ['female' 'male']
# # smoker: ['yes' 'no']
# # region: ['southwest' 'southeast' 'northwest' 'northeast']

# sex_input = gr.Dropdown(['female','male'],label='Sex')
# smoker_input = gr.Dropdown(['yes','no'],label='Smoker')
# region_input = gr.Dropdown(['southwest', 'southeast', 'northwest', 'northeast'],label='Region')

# model_output = gr.Label(label="charges")

# 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

def dprocess(age, bmi, children, sex, smoker, region):
    
    #Index(['age', 'sex', 'bmi', 'children', 'smoker', 'region'], dtype='object')

    sample = {
        'age': age,
        'sex': sex,
        'bmi': bmi,
        'children': children,
        'smoker': smoker,
        'region': region
    }

    data_point = pd.DataFrame([sample])
    
    prediction = insurance_charge_predictor.predict(data_point).tolist()

    with scheduler.lock:
        with log_file.open("a") as f:
            f.write(json.dumps(
                {
                    'age': age,
                    'sex': sex,
                    'bmi': bmi,
                    'children': children,
                    'smoker': smoker,
                    'region': region,
                    'prediction': prediction[0]
                }
            ))
            f.write("\n")

    return prediction[0]

# Set-up the Gradio UI
textbox = gr.Textbox(label='Command:')
company = gr.Radio(label='Company:',
                   choices=["aws", "google", "IBM", "Meta", "msft"],
                   value="aws")

# Create Gradio interface
# For the inputs parameter of Interface provide [textbox,company] with outputs parameter of Interface provide prediction
demo = gr.Interface(fn=dprocess,
                    inputs=[textbox, company],
                    outputs="text",
                    title="operand data automation CLI",
                    description="",
                    theme=gr.themes.Soft())

demo.queue()
demo.launch()