|
from fastapi import FastAPI, HTTPException |
|
from pydantic import BaseModel |
|
import numpy as np |
|
import joblib |
|
|
|
|
|
class InputData(BaseModel): |
|
age: float |
|
sex: float |
|
cp: float |
|
trestbps: float |
|
chol: float |
|
fbs: float |
|
restecg: float |
|
thalach: float |
|
exang: float |
|
oldpeak: float |
|
slope: float |
|
ca: float |
|
thal: float |
|
|
|
app = FastAPI() |
|
|
|
|
|
def load_model(): |
|
model = joblib.load("modelo_heartdisease.pkl") |
|
return model |
|
|
|
model = load_model() |
|
|
|
@app.get("/") |
|
async def root(): |
|
return {"message": "API funcionando. Usa /predict/ para hacer predicciones."} |
|
|
|
@app.post("/predict/") |
|
async def predict(data: InputData): |
|
try: |
|
input_data = np.array([ |
|
data.age, |
|
data.sex, |
|
data.cp, |
|
data.trestbps, |
|
data.chol, |
|
data.fbs, |
|
data.restecg, |
|
data.thalach, |
|
data.exang, |
|
data.oldpeak, |
|
data.slope, |
|
data.ca, |
|
data.thal |
|
]).reshape(1, -1) |
|
|
|
prediction = model.predict(input_data) |
|
prediction_label = "Presencia de enfermedad cardíaca" if prediction[0] == 1 else "Ausencia de enfermedad cardíaca" |
|
return {"prediction": prediction_label} |
|
except Exception as e: |
|
raise HTTPException(status_code=500, detail=str(e)) |
|
|