EricCRX's picture
Update app.py
f5ff2eb verified
import gradio as gr
import pandas as pd
from autogluon.tabular import TabularPredictor
from huggingface_hub import hf_hub_download
import os, zipfile
REPO_ID = "Iris314/classical-automl-model"
ZIP_FILE = "lego_predictor_dir.zip"
local_zip = hf_hub_download(repo_id=REPO_ID, filename=ZIP_FILE)
extract_dir = "lego_predictor_dir"
os.makedirs(extract_dir, exist_ok=True)
with zipfile.ZipFile(local_zip, 'r') as zip_ref:
zip_ref.extractall(extract_dir)
predictor = TabularPredictor.load(extract_dir, require_py_version_match=False)
def predict_brick(length, height, width, studs):
record = pd.DataFrame([{
"Max Length (cm)": length,
"Max Height (cm)": height,
"Width (cm)": width,
"Studs": studs
}])
pred = predictor.predict(record)[0]
proba = predictor.predict_proba(record).iloc[0].to_dict()
return f"Prediction: {pred}", proba
with gr.Blocks(title="LEGO Brick Classifier") as demo:
gr.Markdown("## LEGO Brick Classification\nPredict Standard / Flat / Sloped")
with gr.Row():
with gr.Column():
length = gr.Slider(1, 10, step=0.5, value=4, label="Length")
height = gr.Slider(0.5, 5, step=0.1, value=1.2, label="Height")
width = gr.Slider(1, 10, step=0.5, value=2, label="Width")
studs = gr.Slider(0, 12, step=1, value=4, label="Studs")
btn = gr.Button("Predict")
with gr.Column():
out_label = gr.Textbox(label="Prediction")
out_probs = gr.Label(label="Class Probabilities")
btn.click(predict_brick, [length, height, width, studs], [out_label, out_probs])
gr.Examples(
examples=[
[4, 1.2, 2, 4],
[6, 0.5, 2, 6],
[3, 2.0, 2, 2]
],
inputs=[length, height, width, studs]
)
demo.launch()