Supreetha15's picture
Upload 4 files
6742036 verified
Raw
History Blame Contribute Delete
1.39 kB
# app.py
from fastapi import FastAPI
from pydantic import BaseModel
from typing import Literal
import numpy as np
import joblib
# Load all components
model = joblib.load("model_GBR_custom.pkl")
scaler = joblib.load("scaler.pkl")
encoders = joblib.load("encoders.pkl")
app = FastAPI()
# Define input schema
class CropInput(BaseModel):
crop: str
season: str
ndvi: float
lst: float
windspeed: float
temperature: float
total_rainfall: float
relative_humidity: float
rsm: float
N: float
P: float
K: float
@app.post("/predict")
def predict(data: CropInput):
# Extract fields
x = [
data.crop,
data.season,
data.ndvi,
data.lst,
data.windspeed,
data.temperature,
data.total_rainfall,
data.relative_humidity,
data.rsm,
data.N,
data.P,
data.K
]
# Apply encoders (assuming encoders is a dict with keys 'crop' and 'season')
x[0] = encoders["crop"].transform([x[0]])[0]
x[1] = encoders["season"].transform([x[1]])[0]
# Convert to array and scale
x_arr = np.array(x).reshape(1, -1)
x_scaled = scaler.transform(x_arr)
# Predict
prediction = model.predict(x_scaled)[0]
return {"prediction": prediction}
# To run locally:
# uvicorn app:app --reload