|
import pickle |
|
import pandas as pd |
|
import numpy as np |
|
import gradio as gr |
|
import pathlib |
|
|
|
|
|
|
|
with open('lin_reg.bin', 'rb') as f_in: |
|
(dv, model) = pickle.load(f_in) |
|
|
|
def prepare_features(ride): |
|
features = {} |
|
features['PU_DO'] = '%s_%s' % (ride['PULocationID'], ride['DOLocationID']) |
|
features['trip_distance'] = ride['trip_distance'] |
|
return features |
|
|
|
def predict(features): |
|
X = dv.transform(features) |
|
preds = model.predict(X) |
|
return float(preds[0]) |
|
|
|
def main(PULocationID,DOLocationID,trip_distance): |
|
"""request input, preprocess it and make prediction""" |
|
input_data = { |
|
"PULocationID": PULocationID, |
|
"DOLocationID": DOLocationID, |
|
"trip_distance": trip_distance |
|
} |
|
features = prepare_features(input_data) |
|
pred = predict(features) |
|
|
|
result = { |
|
'duration': pred |
|
} |
|
|
|
return result |
|
|
|
|
|
|
|
input1 = gr.inputs.Number() |
|
input2 = gr.inputs.Number() |
|
input3 = gr.inputs.Number() |
|
|
|
|
|
output = gr.outputs.Textbox() |
|
|
|
intf = gr.Interface(title = "New York taxi duration prediction", |
|
description = "The objective of this project is to predict the duration of a taxi trip in the city of New York.", |
|
fn=main, |
|
inputs=[input1,input2,input3], |
|
outputs=[output], |
|
live=True, |
|
enable_queue=True |
|
) |
|
intf.launch() |