| import gradio as gr
|
| import pandas as pd
|
| import joblib
|
|
|
|
|
| model = joblib.load("xgboost_model.pkl")
|
| label_encoder = joblib.load("label_encoder.pkl")
|
| scaler = joblib.load("scaler.pkl")
|
|
|
|
|
| def predict_from_csv(file):
|
| try:
|
| df = pd.read_csv(file.name)
|
| original_rows = len(df)
|
|
|
|
|
| scaled_data = scaler.transform(df)
|
| preds = model.predict(scaled_data)
|
|
|
|
|
| labels = label_encoder.inverse_transform(preds)
|
|
|
|
|
| df["Dự đoán"] = labels
|
| return df
|
|
|
| except Exception as e:
|
| return f"Lỗi: {str(e)}"
|
|
|
|
|
| iface = gr.Interface(
|
| fn=predict_from_csv,
|
| inputs=gr.File(label="Tải file CSV để dự đoán"),
|
| outputs=gr.Dataframe(label="Kết quả dự đoán"),
|
| title="🧠 Dự đoán tấn công mạng bằng mô hình XGBoost",
|
| description="Tải file .csv (đã qua xử lý đầu vào giống lúc huấn luyện) để hệ thống phân loại và dự đoán loại tấn công."
|
| )
|
|
|
| iface.launch()
|
|
|