| from typing import Dict, Any |
| import numpy as np |
| import joblib |
|
|
| class EndpointHandler(): |
| def __init__(self, path: str = ""): |
| """ |
| Initialize the model and encoder when the endpoint starts. |
| """ |
| self.model = joblib.load(f"{path}/soil.pkl") |
| self.label_encoder = joblib.load(f"{path}/label_encoder.pkl") |
|
|
| def __call__(self, data: Dict[str, Any]) -> Dict[str, Any]: |
| """ |
| Perform prediction using the trained model. |
| Expects input data in the format: |
| { |
| "inputs": [N, P, K, temperature, humidity, ph, rainfall] |
| } |
| Returns: |
| { |
| "crop": predicted_crop_name |
| } |
| """ |
| inputs = data.get("inputs") |
| if inputs is None: |
| return {"error": "No input data provided."} |
|
|
| inputs = np.array(inputs).reshape(1, -1) |
| prediction = self.model.predict(inputs) |
| crop = self.label_encoder.inverse_transform(prediction) |
|
|
| return {"crop": crop[0]} |
|
|