operand / app.py
eogreen's picture
Update app.py
7ba7074 verified
raw
history blame
2.97 kB
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()