import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import os from fastapi import FastAPI, HTTPException from pydantic import BaseModel from typing import List from tensorflow.keras.models import model_from_json from sklearn.preprocessing import StandardScaler class InputData(BaseModel): data: List[float] # Lista de características numéricas (flotantes) app = FastAPI() # Cargar el modelo desde JSON with open('model.json', 'r') as json_file: model_json = json_file.read() model = model_from_json(model_json) # Cargar los pesos en el modelo model.load_weights('model_weights.h5') # Ruta de predicción @app.post("/predict/") async def predict(data: InputData): try: # Convertir la lista de entrada a un array de NumPy para la predicción input_data = np.array(data.data).reshape(1, -1) # Escalar los datos (asegúrate de que el escalador ha sido entrenado y guardado adecuadamente) scaler = StandardScaler() input_data = scaler.fit_transform(input_data) # Realizar la predicción prediction = model.predict(input_data).round() return {"prediction": prediction.tolist()} except Exception as e: raise HTTPException(status_code=500, detail=str(e))