from fastapi import FastAPI from pydantic import BaseModel import joblib from typing import Dict app = FastAPI() loaded_model = joblib.load('model.joblib', mmap_mode='r') class PredictRequest(BaseModel): AG_X: float AG_Y: float AG_Z: float Acc_X: float Acc_Y: float Acc_Z: float Gravity_X: float Gravity_Y: float Gravity_Z: float RR_X: float RR_Y: float RR_Z: float RV_X: float RV_Y: float RV_Z: float cos: float class PredictResponse(BaseModel): activity: str @app.post('/predict', response_model=PredictResponse) def predict(data: PredictRequest): features = [data.AG_X, data.AG_Y, data.AG_Z, data.Acc_X, data.Acc_Y, data.Acc_Z, data.Gravity_X, data.Gravity_Y, data.Gravity_Z, data.RR_X, data.RR_Y, data.RR_Z, data.RV_X, data.RV_Y, data.RV_Z, data.cos] predictions = loaded_model.predict([features])[0] activities = ["Running", "Sitting", "Standing", "Walking", "DownStairs", "Upstairs"] activity = activities[predictions] return {'activity': activity}