Spaces:
Build error
Build error
File size: 1,312 Bytes
b51df68 | 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 51 52 | import pandas as pd
from sklearn.ensemble import IsolationForest
from sklearn.preprocessing import LabelEncoder
import joblib
# ARQUIVOS
CSV_NORMAL = "resultados_carga_normal.csv"
CSV_ANORMAL = "resultados_carga_anomala.csv"
OUTPUT_MODEL = "modelo_anomalia.pkl"
def preprocess(df):
# Converte success TRUE/FALSE para 1/0 se necessário
if df["success"].dtype == object:
df["success"] = df["success"].map(lambda x: 1 if str(x).lower() == "true" else 0)
# Apenas colunas importantes
return df[["elapsed", "success"]]
def train_baseline():
print("🔵 Treinando baseline com resultados normais...")
df = pd.read_csv(CSV_NORMAL)
X = preprocess(df)
model = IsolationForest(contamination=0.05, random_state=42)
model.fit(X)
joblib.dump(model, OUTPUT_MODEL)
print("✅ Modelo salvo como", OUTPUT_MODEL)
def validate_anomalies():
print("🔴 Validando com dados anômalos...")
df = pd.read_csv(CSV_ANORMAL)
X = preprocess(df)
model = joblib.load(OUTPUT_MODEL)
preds = model.predict(X)
percent_anom = (preds == -1).mean() * 100
print(f"🚨 Percentual de anomalias detectadas: {percent_anom:.2f}%")
if __name__ == "__main__":
train_baseline()
validate_anomalies()
|