Spaces:
Sleeping
Sleeping
| from fastapi import FastAPI | |
| from pydantic import BaseModel | |
| import numpy as np | |
| import joblib | |
| app = FastAPI( | |
| title="Iris KNN Prediction API", | |
| description="API for predicting Iris species using KNN model", | |
| version="1.0.0" | |
| ) | |
| # Load model & class names | |
| try: | |
| model, target_names = joblib.load("iris_knn.pkl") | |
| except: | |
| model = None | |
| target_names = [] | |
| class IrisData(BaseModel): | |
| sepal_length: float | |
| sepal_width: float | |
| petal_length: float | |
| petal_width: float | |
| def root(): | |
| return {"message": "Iris KNN API Running! Visit /docs to test the API."} | |
| def predict_iris(data: IrisData): | |
| if model is None: | |
| return {"error": "Model not found on server"} | |
| arr = np.array([[ | |
| data.sepal_length, | |
| data.sepal_width, | |
| data.petal_length, | |
| data.petal_width | |
| ]]) | |
| pred = model.predict(arr)[0] | |
| proba = model.predict_proba(arr)[0] | |
| probability_dict = { | |
| str(target_names[i]): float(proba[i]) for i in range(len(target_names)) | |
| } | |
| return { | |
| "predicted_class": str(target_names[pred]), | |
| "input": data.dict(), | |
| "class_probabilities": probability_dict | |
| } | |