Sina Media Lab
api change 5
5e77405
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
@app.get("/")
def root():
return {"message": "Iris KNN API Running! Visit /docs to test the API."}
@app.post("/predict")
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
}