Resp_text / app.py
Solomon17705's picture
Added Files
3ef5978
raw
history blame contribute delete
958 Bytes
# app.py
from fastapi import FastAPI
from pydantic import BaseModel
from typing import List
import joblib
import os
app = FastAPI()
# Load model once at startup
model = joblib.load("disease_model.pkl")
label_encoder = joblib.load("label_encoder.pkl")
SYMPTOM_KEYWORDS = joblib.load("symptom_keywords.pkl")
class SymptomRequest(BaseModel):
symptoms: List[str]
class PredictionResponse(BaseModel):
disease: str
confidence: float
@app.post("/predict", response_model=PredictionResponse)
def predict(request: SymptomRequest):
selected_set = set(s.lower() for s in request.symptoms)
binary_vector = [1 if s in selected_set else 0 for s in SYMPTOM_KEYWORDS]
pred = model.predict([binary_vector])[0]
probas = model.predict_proba([binary_vector])[0]
confidence = float(probas.max())
disease = label_encoder.inverse_transform([pred])[0]
return PredictionResponse(disease=disease, confidence=round(confidence, 3))