Repository navigation
Expand file tree
/
Copy pathapp.py
More file actions
56 lines (42 loc) · 1.63 KB
/
Copy pathapp.py
File metadata and controls
56 lines (42 loc) · 1.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
import pandas as pd
import joblib
import os
Base_DIR = os.path.dirname(os.path.abspath(__file__))
model = joblib.load(os.path.join(Base_DIR, 'model', 'nyctaxi.joblib'))
input_cols = ['pickup_longitude','pickup_latitude','dropoff_longitude','dropoff_latitude','passenger_count',
'pickup_datetime_year','pickup_datetime_month','pickup_datetime_day','pickup_datetime_weekday',
'pickup_datetime_hour','trip_distance','jfk_drop_distance','lga_drop_distance','ewr_drop_distance',
'met_drop_distance','wtc_drop_distance']
class TaxiInput(BaseModel):
pickup_longitude: float
pickup_latitude: float
dropoff_longitude: float
dropoff_latitude: float
passenger_count: int
pickup_datetime_year: int
pickup_datetime_month: int
pickup_datetime_day: int
pickup_datetime_weekday: int
pickup_datetime_hour: int
trip_distance: float
jfk_drop_distance: float
lga_drop_distance: float
ewr_drop_distance: float
met_drop_distance: float
wtc_drop_distance: float
app = FastAPI(title="NYC Taxi Fare Prediction API")
@app.get('/')
def read_root():
return {'message':'MYC Taxi Fare Prediction API running'}
@app.post("/predict")
def predict_fare(input: TaxiInput):
try:
# coverting input to dataframe
input_df = pd.DataFrame([input.dict()])
#prediction directly
pred = float(model.predict(input_df)[0])
return {"Prediction": pred}
except Exception as e:
raise HTTPException(status_code=400, detail=str(e))