Spaces:
Runtime error
Runtime error
| import pickle | |
| import random | |
| import pandas as pd | |
| import gradio as gr | |
| from fastai.vision.all import * | |
| zone_lookup = pd.read_csv('./data/zone_lookup.csv') | |
| with open('./models/lin_reg.bin', 'rb') as handle: | |
| dv, model = pickle.load(handle) | |
| def prepare_features(pickup, dropoff, trip_distance): | |
| pickupId = zone_lookup[zone_lookup["borough_zone"] == pickup].LocationID | |
| dropoffId = zone_lookup[zone_lookup["borough_zone"] == dropoff].LocationID | |
| trip_distance = round(trip_distance, 4) | |
| features = {} | |
| features['PU_DO'] = '%s_%s' % (pickupId, dropoffId) | |
| features['trip_distance'] = trip_distance | |
| return features | |
| def predict(pickup, dropoff, trip_distance): | |
| features = prepare_features(pickup, dropoff, trip_distance) | |
| X = dv.transform(features) | |
| preds = model.predict(X) | |
| duration = float(preds[0]) | |
| return "The predicted duration is %.4f minutes." % duration | |
| with gr.Blocks() as demo: | |
| gr.Markdown(""" | |
| This demo is a simple example of how to use Gradio to create a web interface for your machine learning models. | |
| Models used in this demo are very simple and are not meant to perform well. The goal is to show how to use Gradio with a simple model. | |
| """) | |
| gr.Markdown("Predict Taxi Duration or Classify dog vs cat using this demo") | |
| with gr.Tab("Predict Taxi Duration"): | |
| with gr.Row(): | |
| with gr.Column(): | |
| with gr.Row(): | |
| pickup = gr.Dropdown( | |
| choices=list(zone_lookup["borough_zone"]), | |
| label="Pickup Location", | |
| info="The location where the passenger(s) were picked up", | |
| value=lambda: random.choice(zone_lookup["borough_zone"]) | |
| ) | |
| dropoff = gr.Dropdown( | |
| choices=list(zone_lookup["borough_zone"]), | |
| label="Dropoff Location", | |
| info="The location where the passenger(s) were dropped off", | |
| value=lambda: random.choice(zone_lookup["borough_zone"]) | |
| ) | |
| trip_distance = gr.Slider( | |
| minimum=0.0, | |
| maximum=100.0, | |
| step=0.1, | |
| label="Trip Distance", | |
| info="The trip distance in miles calculated by the taximeter", | |
| value=lambda: random.uniform(0.0, 100.0) | |
| ) | |
| with gr.Column(): | |
| output = gr.Textbox(label="Output Box") | |
| predict_btn = gr.Button("Predict") | |
| examples = gr.Examples([["Queens - Bellerose", "Bronx - Schuylerville/Edgewater Park", 25], ["Bronx - Norwood", "rooklyn - Sunset Park West", 55]], inputs=[pickup, dropoff, trip_distance]) | |
| with gr.Tab("Classify Dog vs Cat"): | |
| def is_cat(x): return x[0].isupper() | |
| learn = load_learner('./models/model.pkl') | |
| categories = ('Dog', 'Cat') | |
| def classify_image(img): | |
| pred, idx, probs = learn.predict(img) | |
| return dict(zip(categories, map(float,probs))) | |
| with gr.Row(): | |
| image = gr.inputs.Image(shape=(192, 192)) | |
| label = gr.outputs.Label() | |
| examples = gr.Examples(['./examples/dog.jpg', './examples/cat.jpg', './examples/dunno.jpg', './examples/basset.jpg'], inputs=[image]) | |
| classify_btn = gr.Button("Predict") | |
| predict_btn.click(fn=predict, inputs=[pickup, dropoff, trip_distance], outputs=output, api_name="predict-duration") | |
| classify_btn.click(fn=classify_image, inputs=image, outputs=label, api_name="classify-dog-breed") | |
| demo.launch() |