pgurazada1's picture
Update app.py
92f6e9e verified
import os
import joblib
import gradio as gr
import pandas as pd
price_predictor = joblib.load('model-v1.joblib')
carat_input = gr.Number(label="Carat")
shape_input = gr.Dropdown(
['Round', 'Princess', 'Emerald', 'Asscher', 'Cushion', 'Radiant', 'Oval',
'Pear', 'Marquise'],
label="Shape"
)
cut_input = gr.Dropdown(
['Ideal', 'Premium', 'Very Good', 'Good', 'Fair'],
label="Cut"
)
color_input = gr.Dropdown(
['D', 'E', 'F', 'G', 'H', 'I', 'J'],
label="Color"
)
clarity_input = gr.Dropdown(
['IF', 'VVS1', 'VVS2', 'VS1', 'VS2', 'SI1', 'SI2', 'I1'],
label="Clarity"
)
report_input = gr.Dropdown(['GIA', 'IGI', 'HRD', 'AGS'], label="Report")
type_input = gr.Dropdown(['Natural', 'Lab Grown'], label="Type")
hf_token = os.environ["HF_TOKEN"]
hf_writer = gr.HuggingFaceDatasetSaver(hf_token, "diamond-price-predictor-logs")
model_output = gr.Label(label="Predicted Price (USD)")
def predict_price(carat, shape, cut, color, clarity, report, type):
sample = {
'carat': carat,
'shape': shape,
'cut': cut,
'color': color,
'clarity': clarity,
'report': report,
'type': type,
}
data_point = pd.DataFrame([sample])
prediction = price_predictor.predict(data_point).tolist()
return prediction[0]
demo = gr.Interface(
fn=predict_price,
inputs=[carat_input, shape_input, cut_input, color_input,
clarity_input, report_input, type_input],
outputs=model_output,
theme=gr.themes.Soft(),
title="Diamond Price Predictor",
description="This API allows you to predict the price of a diamond given its attributes",
allow_flagging="auto",
flagging_callback=hf_writer,
concurrency_limit=4
)
demo.queue()
demo.launch(share=False)