QAAI_API / train.py
ChristianSardo's picture
Upload 7 files
b51df68 verified
Raw
History Blame Contribute Delete
1.31 kB
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()