Spaces:
Runtime error
Runtime error
| # 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 | |
| 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 | |