Spaces:
Build error
Build error
File size: 1,210 Bytes
35ae1e9 b51df68 35ae1e9 b51df68 35ae1e9 b51df68 35ae1e9 b51df68 35ae1e9 b51df68 35ae1e9 b51df68 35ae1e9 b51df68 35ae1e9 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | from fastapi import FastAPI, UploadFile, File
import pandas as pd
import joblib
from io import BytesIO
app = FastAPI(title="Detecção de Anomalias JMeter")
MODEL_PATH = "modelo_anomalia.pkl"
# Carrega o modelo na inicialização
model = joblib.load(MODEL_PATH)
def preprocess(df):
if df["success"].dtype == object:
df["success"] = df["success"].map(lambda x: 1 if str(x).lower() == "true" else 0)
return df[["elapsed", "success"]]
@app.get("/")
def home():
return {
"status": "online",
"msg": "API de detecção de anomalias está funcionando!",
"rota_upload": "/upload"
}
@app.post("/upload")
async def classify(file: UploadFile = File(...)):
content = await file.read()
df = pd.read_csv(BytesIO(content))
X = preprocess(df)
preds = model.predict(X)
df["anomalia"] = preds
percent_anom = (preds == -1).mean() * 100
alerta = percent_anom > 5
return {
"total": len(df),
"anomalias": int((preds == -1).sum()),
"percentual_anomalias": percent_anom,
"alerta": alerta,
"limite": "Ultrapassado (>5%)" if alerta else "Normal",
}
|