arbol / app.py
Si2469
Update app.py
448837f verified
import pickle
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from typing import List
import numpy as np
# Cargar el modelo desde el archivo .pkl usando joblib
import joblib
# Define la estructura de entrada esperada para FastAPI
class InputData(BaseModel):
Gender: int
Age: float
PlayTimeHours: float
InGamePurchases: int
SessionsPerWeek: int
AvgSessionDurationMinutes: int
PlayerLevel: int
AchievementsUnlocked: int
# Iniciar la aplicaci贸n FastAPI
app = FastAPI()
# Funci贸n para cargar el modelo guardado con joblib
def load_model():
with open('miarbol.pkl', 'rb') as f:
model = pickle.load(f)
return model
# Cargar el modelo al iniciar la aplicaci贸n
miarbol = load_model()
# Ruta de predicci贸n
@app.post("/predict/")
async def predict(data: InputData):
try:
# Convertir los datos de entrada en un array de NumPy para la predicci贸n
X_input = np.array([[data.Gender, data.Age, data.PlayTimeHours, data.InGamePurchases,
data.SessionsPerWeek, data.AvgSessionDurationMinutes,
data.PlayerLevel, data.AchievementsUnlocked]])
# Realizar la predicci贸n utilizando el modelo cargado
prediction = miarbol.predict(X_input)
# Retornar el resultado de la predicci贸n
return {"prediction": prediction[0]}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
# Ruta para verificar el estado de la API
@app.get("/status/")
async def status():
return {"status": "Modelo cargado y API en funcionamiento"}
# Ejemplo de c贸mo utilizar la API
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000)