{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "de4564b5",
   "metadata": {},
   "source": [
    "# Network Threat Detection on CSE-CIC-IDS2018 : From Data Audit to a Working Demo\n",
    "\n",
    "**Project type:** Academic team project  \n",
    "**School:** ESAIP Engineering School, France  \n",
    "**Program:** MSc Cybersecurity & Data Science  \n",
    "**Program period:** 2024–2026  \n",
    "**Course:** Technical Project  \n",
    "**Project year:** 2024\n",
    "\n",
    "Can a model separate **benign** network flows from **attack** flows reliably enough to be useful, and can the same fitted artifact be served consistently in a demo application?\n",
    "\n",
    "This notebook documents the data and modeling workflow used for the team project: data audit, train/validation/test split, model comparison, threshold selection, final evaluation and export of the artifact consumed by the demo.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "05a44d7f",
   "metadata": {},
   "source": [
    "## 1. Environment and reproducibility\n",
    "\n",
    "All random steps use the same seed. Library versions are printed so the run can be compared with another environment."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "64f59944",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-19T11:01:03.340102Z",
     "iopub.status.busy": "2026-10-19T11:01:03.338913Z",
     "iopub.status.idle": "2026-10-19T11:01:05.356408Z",
     "shell.execute_reply": "2026-10-19T11:01:05.355166Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Python       3.12.3\n",
      "pandas       3.0.2\n",
      "numpy        2.4.4\n",
      "scikit-learn 1.8.0\n"
     ]
    }
   ],
   "source": [
    "import os\n",
    "from pathlib import Path\n",
    "\n",
    "os.environ.setdefault(\"MPLCONFIGDIR\", str((Path.cwd() / \".mplconfig\").resolve()))\n",
    "\n",
    "import json\n",
    "import platform\n",
    "\n",
    "import joblib\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import sklearn\n",
    "\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.pipeline import make_pipeline\n",
    "from sklearn.preprocessing import StandardScaler, FunctionTransformer\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.ensemble import RandomForestClassifier, HistGradientBoostingClassifier\n",
    "from sklearn.inspection import permutation_importance\n",
    "from sklearn.metrics import (\n",
    "    accuracy_score, balanced_accuracy_score, f1_score, precision_score, recall_score,\n",
    "    roc_auc_score, average_precision_score, confusion_matrix,\n",
    ")\n",
    "\n",
    "SEED = 42\n",
    "np.random.seed(SEED)\n",
    "\n",
    "FIG_DIR = Path(\"figures\")\n",
    "FIG_DIR.mkdir(exist_ok=True)\n",
    "ART_DIR = Path(\"artifacts\")\n",
    "ART_DIR.mkdir(exist_ok=True)\n",
    "\n",
    "plt.rcParams.update({\"figure.dpi\": 110, \"axes.spines.top\": False, \"axes.spines.right\": False})\n",
    "\n",
    "print(\"Python      \", platform.python_version())\n",
    "print(\"pandas      \", pd.__version__)\n",
    "print(\"numpy       \", np.__version__)\n",
    "print(\"scikit-learn\", sklearn.__version__)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c2970bef",
   "metadata": {},
   "source": [
    "## 2. Load the data\n",
    "\n",
    "The file is the course sample of CSE-CIC-IDS2018 (Canadian Institute for Cybersecurity / University of New Brunswick). Each row is one **network flow** described by 72 statistics computed by CICFlowMeter (packet counts and sizes, inter-arrival times, TCP flags, idle/active times), plus a `Label`.\n",
    "\n",
    "The first column is a saved pandas index, so I drop it.\n",
    "\n",
    "The course CSV is not bundled with the public portfolio because of its size. Place `3_CSE-CIC-IDS2018.csv` next to the notebook to rerun the analysis.\n",
    "\n",
    "Official dataset documentation: https://www.unb.ca/cic/datasets/ids-2018.html"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "8ec1b907",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-19T11:01:05.358823Z",
     "iopub.status.busy": "2026-10-19T11:01:05.358007Z",
     "iopub.status.idle": "2026-10-19T11:01:08.014994Z",
     "shell.execute_reply": "2026-10-19T11:01:08.013872Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Raw shape: (246730, 73)\n",
      "Missing values: 0\n",
      "\n",
      "Label\n",
      "Benign                      75000\n",
      "Infilteration               40000\n",
      "Bot                         20000\n",
      "DoS attacks-Hulk            20000\n",
      "DoS attacks-SlowHTTPTest    20000\n",
      "FTP-BruteForce              15000\n",
      "SSH-Bruteforce              15000\n",
      "DoS attacks-GoldenEye       15000\n",
      "DDOS attack-HOIC            15000\n",
      "DoS attacks-Slowloris       10000\n",
      "DDOS attack-LOIC-UDP         1730\n"
     ]
    }
   ],
   "source": [
    "DATA_PATH = Path(\"3_CSE-CIC-IDS2018.csv\")\n",
    "if not DATA_PATH.exists():\n",
    "    raise FileNotFoundError(\"Place 3_CSE-CIC-IDS2018.csv in the same folder as this notebook.\")\n",
    "\n",
    "raw = pd.read_csv(DATA_PATH)\n",
    "raw = raw.loc[:, ~raw.columns.str.startswith(\"Unnamed\")]\n",
    "\n",
    "print(\"Raw shape:\", raw.shape)\n",
    "print(\"Missing values:\", int(raw.isna().sum().sum()))\n",
    "print()\n",
    "print(raw[\"Label\"].value_counts().to_string())"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3a4967e8",
   "metadata": {},
   "source": [
    "The class counts are round numbers (75,000 / 40,000 / 20,000 / 15,000 …). This sample was **built per class**, so about 70% of the rows are attacks. Real traffic is overwhelmingly benign, so accuracy on this sample says little about a real alert rate. I keep this in mind when choosing metrics.\n",
    "\n",
    "Ten attack labels are present: brute force (FTP, SSH), DoS (Hulk, GoldenEye, Slowloris, SlowHTTPTest), DDoS (HOIC, LOIC-UDP), botnet traffic (Bot) and **Infilteration** (the dataset's spelling)."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e813a90c",
   "metadata": {},
   "source": [
    "## 3. Data audit\n",
    "\n",
    "Before modelling I check four things: columns that never vary, impossible values, exact duplicates and identical flows carrying different labels."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "99cf4526",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-19T11:01:08.016684Z",
     "iopub.status.busy": "2026-10-19T11:01:08.016482Z",
     "iopub.status.idle": "2026-10-19T11:01:10.004541Z",
     "shell.execute_reply": "2026-10-19T11:01:10.003681Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Constant columns: 8 ['Bwd PSH Flags', 'Bwd URG Flags', 'Fwd Byts/b Avg', 'Fwd Pkts/b Avg', 'Fwd Blk Rate Avg', 'Bwd Byts/b Avg', 'Bwd Pkts/b Avg', 'Bwd Blk Rate Avg']\n",
      "Rows with a negative flow duration: 1\n",
      "Rows with Init Bwd Win Byts = -1 (window not observed): 97017\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Exact duplicate rows: 66,935 (27.1%)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "After removing exact duplicates, 3,036 rows share an identical feature vector with a different label (1,517 distinct vectors).\n"
     ]
    }
   ],
   "source": [
    "features_all = [c for c in raw.columns if c != \"Label\"]\n",
    "constant_cols = [c for c in features_all if raw[c].nunique() <= 1]\n",
    "print(\"Constant columns:\", len(constant_cols), constant_cols)\n",
    "\n",
    "neg_duration = int((raw[\"Flow Duration\"] < 0).sum())\n",
    "print(\"Rows with a negative flow duration:\", neg_duration)\n",
    "print(\"Rows with Init Bwd Win Byts = -1 (window not observed):\", int((raw[\"Init Bwd Win Byts\"] == -1).sum()))\n",
    "\n",
    "dup_rows = int(raw.duplicated().sum())\n",
    "print(f\"Exact duplicate rows: {dup_rows:,} ({dup_rows / len(raw):.1%})\")\n",
    "\n",
    "features = [c for c in features_all if c not in constant_cols]\n",
    "dedup = raw.drop_duplicates()\n",
    "n_lab = dedup.groupby(features)[\"Label\"].transform(\"nunique\")\n",
    "conflicts = dedup[n_lab > 1]\n",
    "print(f\"After removing exact duplicates, {len(conflicts):,} rows share an identical feature vector \"\n",
    "      f\"with a different label ({conflicts.groupby(features).ngroups:,} distinct vectors).\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d5f95ac1",
   "metadata": {},
   "source": [
    "**Cleaning decisions**\n",
    "\n",
    "- drop the 8 constant columns (they carry no information);\n",
    "- drop the single row with a negative duration (a measurement error);\n",
    "- keep `Init Bwd Win Byts = -1` as is: it is a sentinel meaning \"not observed\", which tree models handle naturally;\n",
    "- remove exact duplicates;\n",
    "- remove flows whose identical feature vector appears under different labels: the model cannot learn a correct answer for them, and they would blur the evaluation."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "901e1054",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-19T11:01:10.006412Z",
     "iopub.status.busy": "2026-10-19T11:01:10.005887Z",
     "iopub.status.idle": "2026-10-19T11:01:11.309204Z",
     "shell.execute_reply": "2026-10-19T11:01:11.308172Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{\n",
      " \"raw_rows\": 246730,\n",
      " \"constant_columns_removed\": 8,\n",
      " \"negative_duration_rows_removed\": 1,\n",
      " \"exact_duplicates_removed\": 66935,\n",
      " \"conflicting_label_rows_removed\": 3036,\n",
      " \"clean_rows\": 176758,\n",
      " \"features\": 64\n",
      "}\n",
      "\n",
      "Label\n",
      "Benign                      70946\n",
      "Infilteration               35472\n",
      "DoS attacks-Hulk            15262\n",
      "DoS attacks-GoldenEye       14980\n",
      "DDOS attack-HOIC            11427\n",
      "Bot                         10475\n",
      "DoS attacks-Slowloris        9047\n",
      "SSH-Bruteforce               7348\n",
      "DDOS attack-LOIC-UDP         1730\n",
      "DoS attacks-SlowHTTPTest       40\n",
      "FTP-BruteForce                 31\n"
     ]
    }
   ],
   "source": [
    "df = raw.drop(columns=constant_cols)\n",
    "df = df[df[\"Flow Duration\"] >= 0]\n",
    "df = df.drop_duplicates()\n",
    "n_labels = df.groupby(features)[\"Label\"].transform(\"nunique\")\n",
    "conflict_rows = int((n_labels > 1).sum())\n",
    "df = df[n_labels == 1].reset_index(drop=True)\n",
    "\n",
    "audit = {\n",
    "    \"raw_rows\": len(raw),\n",
    "    \"constant_columns_removed\": len(constant_cols),\n",
    "    \"negative_duration_rows_removed\": neg_duration,\n",
    "    \"exact_duplicates_removed\": dup_rows,\n",
    "    \"conflicting_label_rows_removed\": conflict_rows,\n",
    "    \"clean_rows\": len(df),\n",
    "    \"features\": len(features),\n",
    "}\n",
    "print(json.dumps(audit, indent=1))\n",
    "print()\n",
    "print(df[\"Label\"].value_counts().to_string())"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d2cba0b6",
   "metadata": {},
   "source": [
    "The duplicates are not spread evenly. Some attack families are almost entirely made of the same few flows repeated thousands of times. The chart compares the rows in the sample with the distinct flows kept after cleaning:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "4341537f",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-19T11:01:11.311224Z",
     "iopub.status.busy": "2026-10-19T11:01:11.310552Z",
     "iopub.status.idle": "2026-10-19T11:01:11.602278Z",
     "shell.execute_reply": "2026-10-19T11:01:11.601194Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "                           rows  distinct flows kept  kept share\n",
      "Label                                                           \n",
      "Benign                    75000                70946       0.946\n",
      "Infilteration             40000                35472       0.887\n",
      "Bot                       20000                10475       0.524\n",
      "DoS attacks-Hulk          20000                15262       0.763\n",
      "DoS attacks-SlowHTTPTest  20000                   40       0.002\n",
      "DDOS attack-HOIC          15000                11427       0.762\n",
      "DoS attacks-GoldenEye     15000                14980       0.999\n",
      "SSH-Bruteforce            15000                 7348       0.490\n",
      "FTP-BruteForce            15000                   31       0.002\n",
      "DoS attacks-Slowloris     10000                 9047       0.905\n",
      "DDOS attack-LOIC-UDP       1730                 1730       1.000\n"
     ]
    },
    {
     "data": {
      "image/png": "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7OzsbC5Tpoz55Zdftog1u7+DufHLL7+Yu3btavbx8THb2dmZvb29zU2aNDFv2rTJqJPdq7EGDx5sLlGihDl//vxmf39/89tvv20+dOhQpms/N9eBNd9TkUdlMpv/Bk+0EBEREatFRUUxd+7cv8XDrUT+ao/z+/PGG28wb948jh49ioeHR451T5w4QcmSJYmJiSE2NvaR9y0iD0/3TIuIiIiI5KH169czbNiwBybSIvJk0T3TIiIiIiJ56Oeff87rEETkIWhkWkRERERERMRKumdaRERERERExEoamRYRERERERGxkpJpERERERERESspmRYRERERERGxkpJpkTySlpZGYmIiaWlpeR2KiIiIiIhYScm0SB45c+YMfn5+nDlzJq9DERERERERKymZFhEREREREbGSkmkRERERERERKymZFhEREREREbGSkmkRERERERERKymZFhEREREREbGSkmkRERERERERKymZFhEREREREbGSkmkRERERERERKymZFhEREREREbGSkmkRERERERERKymZFhEREREREbGSkmkRERERERERKymZFhEREREREbGSkmkRERERERERKymZFhEREREREbGSkmkRERERERERK+XL6wBE/um2vNUQTxe7vA5DRERERP7GPPutzOsQslUjqGxeh/BQNDItIiIiIiIiYiUl0yIiIiIiIiJWUjItIiIiIiIiYiUl0yIiIiIiIiJWUjItIiIiIiIiYiUl0yIiIiIiIiJWUjItT4TY2FhMJpOxODg4EBAQwMSJE0lPT/9T9mkymXjvvff+lL5FREREROTvTe+ZlieGo6MjW7ZsASAlJYWtW7cyZMgQ0tPTGTJkyGPfX0JCAiVKlHjs/YqIiIiIyN+fkml5YtjY2FCrVi1jvX79+uzfv58VK1b8Kcn0vfsSERERERGxhqZ5yxPN1dWV27dvG+s3b95k6NChlChRAnt7ewICAli0aJFFm6ioKIKCgoiPj6dKlSo4OztTo0YNvv32W4t690/zNpvNjB49miJFiuDi4kK7du3YtGkTJpOJ+Ph4i3YTJ04kNjYWb29vPD096datG9evX/9zToKIiIiIiDxxlEzLEyUtLY20tDSuXr3KF198wfLly2nbtq2x/cUXX2T69OkMGDCA1atX07RpUzp16sS6dess+jlz5gz9+vVj0KBBLFmyhNTUVFq3bm2RmN8vLi6O2NhYoqKiWLFiBaVLlyY6OjrLuh999BG//PILc+fOZeTIkSxatIgxY8Y8npMgIiIiIiJPPE3zlifG9evXsbOzsyhr3769McV769atfPHFF3z55Zc0btwYgPDwcJKSkoiJieH555832iUnJ7Nt2zaeeeYZAJydnalfvz5ff/01wcHBmfZ9584dxo8fT7du3Rg/fjwAjRs35vz588ycOTNTfR8fHxYuXAhA06ZN+e6771i2bJnRNitXrlzhypUrxnpSUlKuzouIiIiIiDx5NDItTwxHR0f27t3L3r172blzJx988AHr16+nR48eAGzYsAEPDw8aNGhgjGCnpaURHh7O999/z507d4y+ihYtaiTSAIGBgQAkJiZmue/ExESSkpJo0aKFRXnLli2zrB8eHm6xHhgYmG3fGaZMmYKfn5+x1KhRI8f6IiIiIiLy5NLItDwxbGxsqFatmrFet25d0tLSGDBgAP379+f8+fMkJydnGr3OkJSUhK+vLwAFChSw2JY/f34AUlNTs20L4OXlZVFeuHDhLOtn1f/NmzezPrD/r3///hbTxpOSkpRQi4iIiIg8pZRMyxMtICAAgAMHDuDh4YGXlxdr167Nsm52iW9u+Pj4AHDu3DmL8rNnzz50n/dzc3PDzc3tsfUnIiIiIiJ5R8m0PNF++uknADw9PWnUqBETJ04kf/78VKpU6bHux9fXlyJFivCf//zHYmr3qlWrHut+RERERETk70HJtDwx0tPT2b17NwC3bt3i22+/5Z133iEwMJCQkBDs7Oxo3rw5TZs25a233qJSpUpcv36dAwcOcPToUWbMmPHQ+7a1teXtt9/mjTfewNvbm/r167N161Y2bdoE3J2CLiIiIiIikkHJtDwxUlJSqF27NgD58uXDz8+PTp06ERMTY9wnnfHE7GnTpnHy5Enc3d0JCgqiW7duj7z/vn37cvHiRaZNm8aHH35Io0aNmDRpEu3bt8fd3f2R+xcRERERkb8Pk9lsNud1ECJPqhEjRjB58mQuXLiAo6PjY+07MTERPz8/5nYsh6dL1g9VExERERF5HDz7rczrELJVI6hsXofwUDQyLfL/HTp0iAULFlCnTh3y589PfHw87733Hr17937sibSIiIiIiDzdlEyL/H9OTk4kJCTw8ccfc/XqVYoVK8agQYOIjY3N69BEREREROQJ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PtvyuLg4evXqRd++fXFyciIqKorWrVvTo0cPi36XL1/OqFGjmD59OrGxsXh7e9O4ceNs442OjiY1NZU+ffrg6OhIzZo1sbGxYdiwYZw9e5ZChQrRuHFjxo0bl+vPIjeio6M5duwYH3/8Me+//z4dOnRg3LhxvPTSS7nuw2QyMWvWLG7evEmTJk2Ij49/4JPWRURERETk6WYym83mvA5C5J8oMTERPz8/5nYsh6eLXV6HI08pz34r8zoEq9QIKvvgSiIiIiJPAd0zLSIiIiIiImIlJdMiIiIiIiIiVlIyLSIiIiIiImIlJdMiIiIiIiIiVlIyLSIiIiIiImIlvRpLJI81mLgZX1/fvA5DRERERESsoJFpERERERERESspmRYRERERERGxkpJpERERERERESspmRYRERERERGxkpJpERERERERESspmRYRERERERGxkl6NJZLHvv/5OL9fSsnrMET+EjWCyuZ1CCIiIiKPhUamRURERERERKykZFpERERERETESkqmRURERERERKykZFpERERERETESkqmRURERERERKykZFpERERERETESlYn07GxsZhMJkwmEzY2Nri7u1OxYkVee+01Dh069NCBrFu3jtDQUDw9PXF2dqZMmTJ06tSJI0eOPHSfGeLj4xk7dmyuyx+XqKgogoKC/pS+Dx48SLt27fD19cXBwQFfX1+aNWvGunXrjDqxsbG4uLj8Kfu/V3x8PCaTiW+++SbHbRn/fhxLfHx8pv5cXV2pUqUKs2bNwmw2W1yr2S3+/v6PfPxTp05l7dq1j9yPiIiIiIg8PR7qPdOOjo5s2bIFgKtXr7J//34+/fRT/v3vfzNz5kw6depkVX+ff/45HTp0oGvXrrz11lvkz5+fQ4cOsWTJEg4dOkS5cuUeJkxDfHw87733HkOHDs1V+ZPu2LFj1KxZk0qVKjF58mQKFy7MiRMnWLt2LfHx8Tz//PN5HWKWnnvuORISEoz17777jn/961/Mnj2bChUqAHDz5k0A7O3tAUhKSqJNmzaMHTuW+vXrG20DAwP57rvvAIz2ly5dYubMmbzyyivcvn2b6OhomjZtarSZMWMGixYtMq7de/fzKKZOnUqzZs2IiIh45L5EREREROTp8FDJtI2NDbVq1TLWw8PD6dOnD5GRkbzyyivUqVOHUqVK5bq/uLg46tevz5w5cyz6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XpwzZ84QFxdH3bp1c5ymPGbMGPbt20fHjh155plnSE1NZcOGDUybNo1WrVpRokSJLNt169aN999/n8jISN555x3jad758uXjjTfeMOq5uLhQpUoVtm3bRv/+/Y3ykJAQPv744wfG97To378/CxcuJDQ0lNdff53ixYtz7tw5vv76a4oWLcqbb77J9OnTSUhIoGnTpvj4+HD8+HEWLFhA48aNjX4CAgLYsmULGzdupGDBgpQsWZJChQrl4ZGJiIiIiMif7aGS6ZSUFGrXrg3cTbz8/f1p2LAhK1eupEKFChZ1J02aRIECBZgxY4bxvulPPvmEnj17GnUGDx7MkiVLGD58OGfOnMHd3Z0KFSqwfPly2rRpk20c3t7eLF26lIEDB9KyZUvKlSvH9OnTmTBhgkW95s2b06dPH8aNG8fZs2cJCQkhPj4+2/K4uDh69epF3759cXJyIioqitatW9OjRw+LfpcvX86oUaOYPn06sbGxeHt7WyRZ94uOjiY1NZU+ffrg6OhIzZo1sbGxYdiwYZw9e5ZChQrRuHFjxo0bl+P579SpE6mpqcTFxXH69GlsbW3x9/dn0qRJ9OnTJ9t2rq6uxMfH079/f1599VXu3LlD3bp12b59O35+fhZ1Mx7Cde+90aGhoXz88cdZ3i/9NCpUqBC7d+9m+PDhDB48mAsXLlC4cGFq1apF69atgbsPIPvvf/9L//79uXDhAkWKFKFjx44WU8PHjh1L7969eeGFF7h69SqzZ8/O8X3jIiIiIiLy9DOZzWZzXgch8k+UmJiIn58fX2zcjncOtzOI/J3UCCr74EoiIiIiT4HH/jRvERERERERkb87JdMiIiIiIiIiVlIyLSIiIiIiImIlJdMiIiIiIiIiVlIyLSIiIiIiImKlh3o1log8PlUqlMTX1zevwxAREREREStoZFpERERERETESkqmRURERERERKykZFpERERERETESkqmRURERERERKykZFpERERERETESkqmRURERERERKykV2OJ5LEtbzXE08Uur8OQXPDstzKvQwCgRlDZvA5BRERE5B9PI9MiIiIiIiIiVlIyLSIiIiIiImIlJdMiIiIiIiIiVlIyLSIiIiIiImIlJdMiIiIiIiIiVlIyLSIiIiIiImIlJdMPEBsbi8lkwmQyYWNjg7u7OxUrVuS1117j0KFDmeqHhYUZ9fPl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+voaS8Z95yIiIiIi8vRRMv2QUlNT6du3L/b29kRHRz+w/m+//caYMWMIDAykQYMGwN0k+bnnnmPq1KmcO3fOov65c+f44IMPqFq1KvXq1TPK7n+oFvxvSnVOI+QpKSnkz5/fWL9z5w6fffaZRZ2M7fePVGdXnpKSgp2dncW054ULF1rUKV++PL6+vsyePTvb2DJ4e3uzefNmkpOTef7557l+/bqx7f5R54cRHR2Ns7MzI0aMyPQqsW3btrFhwwZ69uyJo6Njlu0dHR3p3bs3K1asYOvWrZm2p6amsmXLloeKTUREREREni56AFkupKenG6OZ165dY//+/Xz66af8+uuvzJkzB39/f4v6ly5dYvfu3ZjNZpKTk9m1axeffPIJ9vb2fP755xavsVqwYAFhYWHUqlWLt99+m3LlynH06FHGjh2L2Wxm/vz5Rt25c+cyf/58OnfuTJUqVUhPT2fXrl1MmDCBqlWrEhwcnO0xhIeH8+9//5vAwEA8PT2ZNm0aN2/etKhTpEgRChQowOLFiylZsiT29vZUqlQp2/Lw8HCmTp1K3759ad26NQkJCRbxwt37i9977z06duzICy+8QJcuXbC3tychIYHq1avTrFkzi/rFihVj8+bNhISE0KJFC9asWYODg4NVn1d2ihYtysyZM3n55Zdp1KgR//rXv/D09OSrr75i/Pjx1KxZk9GjR+fYx+jRo9mzZw8RERH861//Ijw8nPz58/PDDz/w0Ucf0bx5c+PHEhERERER+ftSMp0LKSkp1K5dG7g7rdrf35+GDRuycuVKKlSokKn+V199Re3atbGxscHd3Z3y5cvzxhtv0KdPH2Pac4aAgAC+++474zVQf/zxB15eXkRERBATE2Nx/25ERAQnT55k7ty5jBkzhvT0dIoXL87AgQPp379/pncn3ysuLo5evXrRt29fnJyciIqKonXr1vTo0cOoY2Njw+zZsxk6dCgNGzbk5s2bHD9+HH9//yzLIyIimDBhAnFxccyePZu6deuyevVqypUrZ7Hv9u3b4+TkxLvvvkuHDh1wcHDgueeeo3Xr1lnG6u/vz5YtWwgJCaFNmzasWrXKYlT9UbRv3x5/f3/effddXn31Va5fv46/vz8DBw5k4MCBODk55djewcGBDRs2MG3aNObPn8/HH39Meno6ZcuWpUuXLrz++uuPJU4REREREXmymcxZzRsWkT9dYmIifn5+zO1YDk+XrF/tJU8Wz34rH1zpL1AjqGxehyAiIiLyj6d7pkVERERERESspGRaRERERERExEpKpkVERERERESspGRaRERERERExEpKpkVERERERESspGRaRERERERExEp6z7RIHmswcbPF+8RFREREROTJp5FpERERERERESspmRYRERERERGxkpJpERERERERESspmRYRERERERGxkpJpERERERERESvpad4ieWzLWw3xdLHL6zDkKRLx6U95HYKIiIjIP55GpkVERERERESspGRaRERERERExEpKpkVERERERESspGRaRERERERExEpKpkVERERERESspGRaRERERERExEpPTDIdGxuLyWTCZDJhY2ODu7s7FStW5LXXXuPQoUMP3e+6desIDQ3F09MTZ2dnypQpQ6dOnThy5MgjxxwfH8/YsWNzXf64REVFERQU9Kf1bzabWbhwIQ0aNMDDw4P8+fNTrFgx2rZty9q1a63uLzY2FhcXlwfWa9WqFWFhYQ8R8YPFx8cb19f9S9OmTf+UfYqIiIiIyN/XE5NMAzg6OpKQkMCuXbtYtmwZ3bp1Y9OmTTz77LMsWLDA6v4+//xzIiIiKFmyJHPnzmXVqlX069ePEydOPFKCniGvkuk/k9lsplOnTnTp0oUSJUowc+ZMNm3axIQJE7h58yaRkZEcPnw4r8N8aLNnzyYhIcFimTp1al6HJSIiIiIiT5l8eR3AvWxsbKhVq5axHh4eTp8+fYiMjOSVV16hTp06lCpVKtf9xcXFUb9+febMmWPRZ79+/UhPT3+cof9tTJs2jUWLFjF79myioqIstnXq1Im1a9fi5OSUN8E9BkFBQVSrVi2vwxARERERkafcEzUynRUHBwfi4uK4desWM2bMMMrT09N555138Pf3x97engoVKjB9+nSLthcvXsTHxyfLfm1scj70efPmERwcjIeHBwULFiQsLIw9e/YY22NjYxk1ahTXr183pguHhYVlWw7w888/06FDB/z8/HByciIwMJDJkydnSuxv3rzJ8OHDKVWqFPb29vj6+mZKbO+Vnp5OdHQ0np6efPPNNwB89dVXhISE4O7ujqurKxUrVmTu3Lk5HjPAlClTqF69erb7i4iIwM/Pz2LfD/ocsnLo0CFCQ0NxcHCgdOnS2cZ26NAhWrZsibu7O87O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DHv27GH48OH06dOHa9eu4ePjQ0hIyAOfxp6dbt26ZSorXbq0xSg53L0neunSpcb95Pdq164dBQoU4N1332XBggUA+Pv707Rp0yynw4uIiIiIyN+PyWw2m/M6CJEnTZcuXfj++++Nh7b9GRITE/Hz82Nux3J4utj9afuRv5+IT3/K6xBERERE/vGeqJFpkby2f/9+9u3bx2effca0adPyOhwREREREXlCKZkWuUfz5s05d+4cXbt2zXKKt4iIiIiICCiZFrFw/xPbRUREREREsvLEvxpLRERERERE5EmjZFpERERERETESkqmRURERERERKyke6ZF8liDiZvx9fXN6zBERERERMQKGpkWERERERERsZKSaRERERERERErKZkWERERERERsZKSaRERERERERErKZkWERERERERsZKe5i2Sx7a81RBPF7u8DuOJ4tlvZV6H8ESrEVQ2r0MQERER+cfTyLSIiIiIiIiIlZRMi4iIiIiIiFhJybSIiIiIiIiIlZRMi4iIiIiIiFhJybSIiIiIiIiIlZRMi4iIiIiIiFhJyfQTZOHChdSoUQN3d3fc3NwICAggOjqas2fPGnVu3LjB6NGjCQwMxMnJiUKFClG9enWGDRtm0ZfJZOK9997Lcj85bcsQGxuLyWQyFgcHBwICApg4cSLp6emPfrD/36VLl4iNjeXgwYMP3cf7779P8eLFsbW1pVWrVo8tNhERERERkezoPdNPiIkTJzJkyBDefPNNRo8ejdls5qeffmLhwoX8/vvvFC5cGIC2bdvy9ddfM3ToUKpUqcLFixfZu3cvq1at4t13332sMTk6OrJlyxYAUlJS2Lp1K0OGDCE9PZ0hQ4Y8ln1cunSJUaNGERQURGBgoNXtf/nlFwYMGMDgwYNp3rw5np6ejyUuERERERGRnCiZfkJ8+OGHREVFMXnyZKPs+eefZ9CgQcZI8NGjR1m3bh1z586lS5cuRr0XXniBsWPHPvaYbGxsqFWrlrFev3599u/fz4oVK3JMplNSUnB0dHzs8WTl8OHDmM1mevToQalSpR6pr5s3b2JnZ4eNjSZsiIiIiIhIzpQ1PCEuXryIj49PltsykruLFy8CZFnvr0oAXV1duX37trF+4sQJTCYTc+bMoUePHhQqVIgaNWoA4O/vz2uvvWbRftWqVZhMJk6cOMGJEycoWbIkAO3atTOm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jx/H39+fZcuWMX78eKZNm8bJkydxd3cnKCiIbt265bhfV1dX4uPj6d+/P6+++ip37tyhbt26bN++HT8/vwfG/dZbb+Hl5cX777/PnDlzcHV1pXbt2sbU8kKFCrF7926GDx/O4MGDuXDhAoULF6ZWrVq0bt36gf2LiIiIiMjTz2Q2m815HYTIP1FiYiJ+fn7M7VgOT5cH/zjxT+LZb2Veh/BEqxFUNq9DEBEREfnH06uxRERERERERKykZFpERERERETESkqmRURERERERKykZFpERERERETESkqmRURERERERKykZFpERERERETESnrPtEgeazBxM76+vnkdhoiIiIiIWEEj0yIiIiIiIiJWUjItIiIiIiIiYiUl0yIiIiIiIiJWUjItIiIiIiIiYiUl0yIiIiIiIiJW0tO8RfLY9z8f5/dLKXkdhjxFagSVzesQRERERP7xNDItIiIiIiIiYiUl0yIiIiIiIiJWUjItIiIiIiIiYiUl0yIiIiIiIiJWUjItIiIiIiIiYiUl0yIiIiIiIiJWUjL9hImNjcVkMmVagoKCsiy/d/H39wcgKirKotzHx4fmzZuzf//+HPcdFhZm0c7d3Z1atWrxn//857Ee4759+4iNjeXGjRsP1f7+ODOW11577bHGKSIiIiIikh29Z/oJ5OjoyJYtWyzKbt26Rf78+Y31GTNmsGjRIot69vb2xr9LlSrFwoULMZvNHD16lJEjRxIaGsrBgwcpUqRItvuuW7cu7733HgCXLl1i5syZtGnThu3bt1O3bt3Hcnz79u1j1KhRvPbaazg5OT1UH/fGmSGn4xIREREREXmclEw/gWxsbKhVq1aOddavX59jPUdHR2Nb7dq18ff3JyQkhAULFjBw4MBs+y1QoIBFn40aNcLHx4f//Oc/OSbTKSkpODo65hjz43R/nI/DX30MIiIiIiLy9NI073+IatWqAXD8+HGr2uXLlw9HR0du375tlM2ZMweTyURCQgLh4eE4OzszaNAgTpw4gclkYtmyZRZ9vPHGG8YU9Dlz5tCtWzcAvLy8LKanAyQmJtKpUyc8PT1xdHQkJCSEb7/91urjXbFiBc8++ywODg4ULVqU/v37k5qaamyPj4/HZDKxZs0a2rZti5ubG+3atQPujsj37dsXX19f7O3tKVmyJG+//bZF/2vWrKFmzZo4Ojri5eVF7969uX79utVxioiIiIjI00kj00+otLQ0i3VbW1tMJtND95eRRBctWjTHemaz2dj3pUuXmD59OqdPn6ZNmzaZ6r700ku8+uqrDB06NNfTtSMjIxk+fDjvvPMO69evx93d3ZiefvHiRYKDg3FxcSEuLg53d3fi4uJo0KABv/zyC4ULF84yzgz58t29nL/44gvatm1Lhw4dGD9+PD///DNDhw7lt99+y5Tov/rqq3Tq1ImVK1dia2vLzZs3adCgASdOnCAmJoaKFSty6tQpdu7cabRZtmwZ7du3p1u3bowaNYqkpCSGDBnCxYsX+eyzz3J1HkRERERE5OmmZPoJdP36dezs7CzK5s+fT6dOnazqJy0tDbPZzLFjx+jVqxd2dna0bNkyxzZr16612LetrS1TpkyhXr16mer26tWLwYMHG+snTpx4YExeXl6ULl0agKpVq+Lp6Wlsmzp1KpcuXWLPnj1G4tywYUPKlSvHe++9x8SJE7ONE+DUqVP4+voSGxtLrVq1WLRoEQBNmzbFycmJnj17sn//fipWrGi0adGiBRMmTDDW//3vf/P999+za9cuateubZR37doVuJvEDxw4kPbt2zNjxgxju4+PDxEREYwYMYJnnnkmy2O/cuUKV65cMdaTkpIeeL5EREREROTJpGT6CeTo6Mj27dstykqVKmVVHwcOHLBINosWLcrChQsJCgoiPT2d9PR0Y5uNjQ02Nndn/AcHB/P+++8DcPXqVdauXUv//v0pUKCAkVBmiIyMtCqmB9mwYQP169fHw8PDGHW2tbUlNDSUvXv3WtS9N84M3t7eXLt2jX379mV6OFn79u3p2bMnO3futEim7z+GzZs3ExAQYJFI3+vIkSOcPHmSqVOnWoyMh4aGYmNjwzfffJNtMj1lyhRGjRr1gLMgIiIiIiJPAyXTTyAbGxvjHueHVbp0aT777DPj1Vg+Pj7GNPHRo0dbJHUxMTHExsYC4O7ubrHv+vXrc/jwYQYOHEiXLl0sppp7e3s/Uoz3O3/+PLt378404pxxPPe6P84Mf/zxB2azOVNsGdPJk5OTLcrvr3fhwoUcp8KfP38egNatW2e5/dSpU9m27d+/P9HR0cZ6UlISNWrUyLa+iIiIiIg8uZRM/005ODhkm5C/+uqrNGvWzFh/0H3UAQEB/Pe//+Xs2bMWyef993A7ODgAd1/jda+LFy/mKmYPDw+aNm3KmDFjMm2797VfOSlQoAAmk4mzZ89alF++fJmbN2/i4eFhUX7/MRQqVIgff/wxxxgBPvroI2rWrJlpe07n0s3NDTc3twceg4iIiIiIPPmUTP8DFS1a9IEJ9L1++ukn7OzsHpgIFi5cGDs7Ow4dOmSU3bp1i23btlnUy3hf9r1P14a7r+FasGABAQEBODs75zq+e7m4uPDss8+ybNky3nzzTaN8yZIlwN3p4Tlp1KgRn3/+OV9//XWWyXKFChXw9fXl119/5V//+tdDxSgiIiIiIk8/JdNi4dKlS+zevRv43z3Ta9eupUePHg98B7ONjQ1t2rTho48+okyZMnh6evLRRx9hNpstRoADAgIA+L//+z9atWqFk5MTFStWpH///ixcuJDQ0FBef/11ihcvzrlz5/j6668pWrSoRXKck9jYWFq1akWnTp3o1KkThw8fZujQobzwwgsW90tnpXPnzkybNo3IyEhiYmIICgri9OnTbN++nU8//RSTycSUKVN46aWXuH79OpGRkTg7O3Py5EnWrFnD2LFjKVeuXK7iFBERERGRp5eSabHw1VdfGQ/fcnR0pFSpUkyaNIl+/frlqn1cXByvvvoq/fr1w9XVlUGDBlG+fHlWrVpl1KlSpQqxsbHMmDGDiRMn4ufnx4kTJyhUqBC7d+9m+PDhDB48mAsXLlC4cGFq1aqV7T3KWWnRogVLly5l9OjRtGzZEg8PD1599VXGjRv3wLb29vZs3ryZYcOGMXbsWJKTk/H19aVjx45GnXbt2lGgQAHeffddFixYAIC/vz9NmzZ97PeRi4iIiIjIk8lkNpvNeR2EyD9RYmIifn5+fLFxO95FiuR1OPIUqRFUNq9DEBEREfnHs8nrAERERERERESeNkqmRURERERERKykZFpERERERETESkqmRURERERERKykZFpERERERETESkqmRURERERERKyk90yL5LEqFUri6+ub12GIiIiIiIgVNDItIiIiIiIiYiUl0yIiIiIiIiJWUjItIiIiIiIiYiUl0yIiIiIiIiJWUjItIiIiIiIiYiU9zVskj215qyGeLnZ5Hcbfime/lQ+sUyOo7F8QiYiIiIj8XWlkWkRERERERMRKSqZFRERERERErKRkWkRERERERMRKSqZFRERERERErKRkWkRERERERMRKSqZFRERERERErPS3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",
      "text/plain": [
       "<Figure size 990x484 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "per_class = pd.DataFrame({\n",
    "    \"rows\": raw[\"Label\"].value_counts(),\n",
    "    \"distinct flows kept\": df[\"Label\"].value_counts(),\n",
    "}).sort_values(\"rows\", ascending=False)\n",
    "per_class[\"kept share\"] = (per_class[\"distinct flows kept\"] / per_class[\"rows\"]).round(3)\n",
    "print(per_class.to_string())\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(9, 4.4))\n",
    "y_pos = np.arange(len(per_class))\n",
    "ax.barh(y_pos, per_class[\"rows\"], color=\"#c9d3da\", label=\"rows in the sample\")\n",
    "ax.barh(y_pos, per_class[\"distinct flows kept\"], color=\"#b5652b\", label=\"distinct flows kept\")\n",
    "ax.set_yticks(y_pos, per_class.index)\n",
    "ax.invert_yaxis()\n",
    "ax.set_xlabel(\"Number of rows\")\n",
    "ax.set_title(\"Rows in the sample vs distinct flows kept, per class\")\n",
    "ax.legend(frameon=False, loc=\"lower right\")\n",
    "plt.tight_layout()\n",
    "plt.savefig(FIG_DIR / \"iot-duplicates-by-class.png\", dpi=110)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1412b551",
   "metadata": {},
   "source": [
    "FTP-BruteForce has 15,000 rows but only 31 distinct flows left after cleaning; SlowHTTPTest has 20,000 rows but 40. With a random split on the raw sample, the same flow lands in both training and test sets, so a \"100% detection\" on these classes mostly measures memorisation."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "efd2ab2b",
   "metadata": {},
   "source": [
    "### Benign and Infiltration look alike\n",
    "\n",
    "Most attack families target a single service: port 80 for DoS/DDoS, 21 for FTP brute force, 22 for SSH, 8080 for the botnet. Infiltration is different. Its flows use the same destinations as normal traffic (DNS on 53, HTTPS on 443, RDP on 3389).\n",
    "\n",
    "This matches published criticism of the dataset. Liu, Engelen et al. (IEEE CNS 2022) report labelling and attack-orchestration errors in CIC-IDS-2017 and CSE-CIC-IDS-2018. I therefore treat Infiltration as the class where the labels themselves are least reliable."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "a29e9bcb",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-19T11:01:11.604365Z",
     "iopub.status.busy": "2026-10-19T11:01:11.603763Z",
     "iopub.status.idle": "2026-10-19T11:01:11.849235Z",
     "shell.execute_reply": "2026-10-19T11:01:11.848298Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "port           53 (DNS)  443 (HTTPS)  3389 (RDP)  80 (HTTP)  other\n",
      "Label                                                             \n",
      "Benign             22.4         11.8        10.3        8.1   47.4\n",
      "Infilteration      31.3         19.4         9.4        3.4   36.5\n"
     ]
    },
    {
     "data": {
      "image/png": "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AAAeJxIy2ImIiNDt27f14osv6rnnnrOW16hRI13aNwxDd+7ckZOT0yO1U6lSpXSJBwAAADALUxYzkYRph19++aUGDRokT09PeXt764033lBsbKyke1Mcy5UrJ0lq2LChLBaLQkJCEp2yeL9evXpp8eLFOnLkiCwWiywWi3r16mXdVrZsWa1fv14VKlSQk5OTvvvuO924cUODBg1SiRIllCNHDvn5+WngwIG6evWqtV0/Pz+dOnVKc+bMsba7aNEi67YHpyyuWbNGFStWVPbs2VWgQAENHz5ct27dsm7fvn27LBaLfvzxR3Xr1k2urq7y9fXV1KlT0+tlBgAAAFKMEbJM6K233lKbNm309ddfa/fu3QoJCVGxYsU0cOBA9evXT0WLFtVLL72kOXPmqHLlyipUqJA1YUvKO++8o3///Vfh4eFatmyZJClPnjzW7WfOnNGQIUP09ttvq3DhwipcuLBiYmIUFxen9957T3ny5FFkZKTee+89tW3bVtu2bZN0b1pi8+bNVbt2bb3++uuSpKJFiyYaw7fffqsOHTqoS5cumjJlisLDwzVmzBj997//tUskBw4cqBdffFFhYWFau3atRo4cqfLly6tp06Zpfl0BAACA1CIhy4SqV6+ujz76SJLUqFEjbdu2TaGhoRo4cKAKFSpkHSErXbq0dZpiREREsm0WLVpUefLk0alTpxKd2nj58mVt2LBB1atXtyn/5JNPrP8fGxurIkWKqHbt2jp27JgCAgJUqVIlOTk5KV++fA+dMhkSEqIaNWpo+fLlkqSmTZsqR44cGjBggP744w/reUlS+/btFRISIuneSOD333+v0NBQEjIAAAA8VkxZzIQaN25s87x06dI6ffp0hh4zV65cdsmYJC1dulSVKlVSzpw5lS1bNtWuXVuSdOzYsVS1f/36dR08eFAdOnSwKe/cubMkadeuXTbl978GFotFpUqVyvDXAAAAAHgQCVkm5OHhYfPc0dHR5jqrjJAvXz67srCwML300ksKDAzU119/rZ9//llhYWGSlOp4rly5IsMw7I7j7u4uJycnXbp0yabcjNcAAAAAeBBTFvFYWCwWu7JVq1apYsWK+vTTT61l//nPf9LUvoeHhywWi86fP29TfvXqVd2+fVteXl5pahcAAADISIyQId2kdpTp5s2bcnR0tClLWBAkte3mzJlTFStWtFu8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/Pz0999/6+7duypZsqRN/VKlSkmSwsPD03Q8AAAAADBTmhIyf39/bdiwQZK0bNkyValSRV5eXpKk8+fPy83NLU3B+Pr6ytnZWVWqVJG3t7eWL18u6d41apLk4eFhU9/T01PSvWvQkhMdHa3Tp09bH1FRUWmKDwAAAADSU5quIRs+fLj69eunBQsW6NKlSzZTFLdv367y5cunKZj169frxo0bOnLkiN599121atVKP/74Y5raut+MGTM0fvz4R24HAAAAANJTmhKyPn36qFixYtq/f78qV66soKAg67ZcuXJp6NChaQomIZGrWbOmqlWrpooVKyosLEylS5eWJLtl8BNGzhJG55KSkEAmiIqKsl4DBwAAAABmSVNCJkl169ZV3bp17cpDQkIeJR6r8uXLK1u2bPrrr7/UqlUrZcuWTeHh4WrSpIm1TsK1Yw9eW/YgNze3NE+jBAAAAICMkqZryMqVK6dXX31VX3/9dYZdj7V3717dvXtX/v7+cnJyUlBQkN09x1auXKlSpUrJz88vQ2IAAAAAgIyUphGyli1baseOHZo/f75iY2Pl7++vOnXqWEfN/P39U9XeCy+8oKpVq6p8+fJydnbWoUOH9MEHH6h8+fJq27atJOmdd95R/fr19corr6hTp07atm2bli9frpUrV6blFAAAAADAdGlKyCZPnixJunXrlnbv3q2dO3dqx44dGjRokG7evKkCBQooMjIyxe0FBgZq5cqVmjJliuLj4+Xn56fg4GC98cYbcnR0lCTVrl1ba9as0dtvv60FCxaocOHCmj9/vt29yQAAAADgaZHma8gkKXv27KpZs6YMw1BsbKxu3Lihffv22S2+8TCjRo3SqFGjHlqvdevWat26dVrDBQAAAIAnSpquIduwYYNGjx6tWrVqyd3dXR07dtShQ4fUsWNH7d2717r6IQAAAAAgaWkaIWvRooWcnZ3Vr18/ffrppypbtqwsFkt6xwYAAAAAz7Q0jZC9+uqrKlasmGbPnq1mzZqpe/fumjdvno4ePZre8QEAAADAMytNCdnHH3+sQ4cO6eLFi5o7d64KFiyohQsXqmLFisqXL586dOiQ3nECAAAAwDPnkRb18PDwUPPmzZUnTx7lypVLjo6O+umnnxQWFpZe8QEAAADAMytNCdm2bdu0Y8cO7dixQ3v37tXNmzfl7e2tOnXqaM6cOapX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8uWz23b9+nXlz59fkydPlo+Pj6KiojR58mQFBQXp0KFDyp07d7Jtf/LJJ/L09FSLFi1SHfvcuXMVHR1tff7KK68oR44cmjZtmrUsT548GjhwoPX5xIkTFR4ebpMs3X/vlueee07Tpk1TXFyc/vjjD7399tvat2+ffv/9d+XIkUNTp07VqFGj9Nprr2nChAkyDEOHDx/WsmXLdObMGeXNm1cODg4aNWqUxo0bp86dOytr1sz9UXzp0iVVr15dQ4YMUa5cuXT48GGFhITo8OHD2rRpk7XelStX1LlzZ5UtW1bZs2fXli1bNGTIEEVHR2vMmDHWeh07dlR4eLgmTZqkwoULa/369Xr55ZeVJUsW6w8zp06dUsOGDVW3bl2tXr1aZ86c0ciRIxUVFaXQ0NCHxvzee++pfv36dj9AdOjQQa+//rru3r2r/fv3a9y4cfrtt9904MABZcuWzabuwoULVbJkSd26dUsnTpzQV199pcaNG+uVV17RnDlzbOo6Oztr69atkqTTp09r4sSJatiwoX799VeVLVtWXbp00TvvvKMlS5aod+/eqXsDMqnt27erXbt2eumll/Tee+/p4sWLGjt2rBo3bqw//vhDzs7OkqQVK1YoODhYb731lho0aKCVK1eqXbt22rlzp2rUqJHsMX799Vd99913iSZ5D9OvXz81bdrU+nz+/Plavny5tR9IUpYsWWySp++//17vvvuu3b/zCehHSC83b960/o0gHRjINBYuXGhIMv79999U71urVi2jUaNGD603duxYo3z58ik6blxcnNGjRw/DYrEYO3futJb37NnTKF68uFGoUCGjT58+Nvu0adPGqFevnvV59+7djWLFihmxsbF2scTFxdk8DwoKMoYOHfrQc8D/HD161HBxcTHmzZtnSDL279+faL133nnHqFu3rtGzZ0+jTJkyD2332LFjhiRj2bJlydaLj483/Pz8jBkzZtiU16tXz2jRokWi+6R1W4LkziGx/ZcsWWJIMlatWmUYhmEULFjQ6N27d6L7398nb9y4Ybi4uBhhYWHJxpNZffbZZ4Yk459//km2Xrdu3YzixYtbn0dFRRmSjIULF9rUq1u3rtGgQQPr8wEDBhgFChQwbt26ZS0LDQ01JBm//vprsse8du2a4eLiYqxZs8am3NfX13j11Vdtyt577z1DkrF7925r2bZt25L8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0aOHNm7cqFmzZmnYsGFq3769ypUrp4CAAGXJkkVffPGFfv75Z/3yyy+pav+DDz7Q999/r86dOyssLEzbt2/Xl19+qZ49e2r79u0Zc1Kww5TFTKRJkyZq0KCBdRrPt99+q88++0xDhw61flH8/fffNXLkSHXs2FF+fn66fv261q1bp/nz52vy5MnJ3sA2MDBQWbNm1YEDB1SqVCm77QcOHJC7u7tu3rxpvTH0gQMHNHXqVNWsWTPZ2IcMGaLp06drz549qlevnrU8ODhYsbGxat++vYoXL67o6GiFhoZq3bp1GjZsmM10kYQPqdq1a6f8RcuEPDw8VL9+/US3ValSxXqNVsmSJe1WHktYgOX+/UNCQnT16lU999xzypMnjyIiIvTRRx/p9u3bGjZsWLKxPPfcc/r666919+5du5vqPqnKlSunVq1aqUmTJvL29tY///yj2bNn68KFC3YL6Pzyyy8qVapUiq7Be5a98MILqlq1qsqXLy9nZ2cdOnRIH3zwgcqXL2+dRnP16lU1b95cPXr0ULFixXT37l1t375ds2bN0oABA6zXNjRv3lyFCxdWhw4dNG7cOHl7e2vTpk1atGiRxo8fbz3myZMntXjxYuvN47du3aqZM2dq4cKF1mlqSUnolynh5eWlwYMHa9KkSTp69KjNZ+Phw4cVGxur27dv68SJE1q+fLk2b96swYMHW6dWpsaNGzcUHh5uc00dkjZw4EANGzZMQ4cOVatWrXTx4kW9++67yps3r01SHhISou7du6to0aIKCgrSypUrtXfv3ocuIPTcc88pPj5ev/3221P17w796MnSunVrrVq1ShMmTFCbNm3k5eWl/v37a/LkyZLuTSucM2eOpk6dqqVLl6Z6teFatWpp165dGjdunHr37q07d+6oUKFCatiwoYoVK5ZRp4UHPf5bn8EsQ4YMMYoXL244OzsbTk5ORrly5YxZs2bZ3BTz7NmzRpcuXQxfX1/DycnJyJs3r1G3bl1j7dq1KTpGq1atjG7dutmUJdyoMuHh4uJiBAQEGL179zb27dtn10ZSN+Z9++23DUk2N4beuHGj0a1bN8Pf399wdnY2cuXKZQQGBhoLFiywu1n04MGDjTp16qToPGAruRvZ3i+x9+6bb74x6tWrZ+TKlctwcnIy/P39jV69ehl///33Q4979uxZI2vWrMamTZtsyp+kG0M/aM6cOUbTpk2NggULGo6OjkaBAgWMpk2bGlu3brWrW65cOeOdd95Jtr3MYPLkyUbFihUNV1dXw8XFxShTpozxzjvvGFevXrXWuXXrltGrVy+jWLFihrOzs+Hl5WUEBgYaX3zxhd3f+vHjx41OnToZBQoUMHLkyGGUKVPGmDlzpk29yMhIo169eoa7u7vh7Oxs1KhRw/juu+9SFO+BAwcMScaxY8dsyhO7MbRhGMbFixcNNzc3o2fPnoZhGHY3c3V2djb8/PyMzp07Gz/++KPd/im5IbBh3Lt5rIuLixEdHZ2i88js4uPjjU8++cQoX7684eLiYuTPn99o166dcfToUbu68+fPN4oVK2Y4Ojoa5cqVS3FfKVeunDFmzBibsifpxtCJoR8Bj5/FMB7zTXvwTPvuu+/UrVs3nTt3zm5qkJliY2NVuHBhTZkyRS+99JLZ4SAV2rdvL3d392SvSXsaHTlyRBUqVNDx48dTfI8qPDmqVKmiNm3aPPQ+fY9Tx44d5erq+sz9rTzNPv74Y82aNUvHjx9/ahZEoB8Bjx8JGdKVYRiqWrWqevbsqSFDhpgdjtWSJUv07rvv6s8//0x22iWePAcPHtRzzz2nEydOPFNL7vbp00eS+NLzlPrmm2/08ssv6+TJk0mupPc4nTx5UmXKlNEff/yhokWLmh0O/r+bN2+qWLFi+uSTT5K9rvZJQT8CzME3U6Qri8WiefPm6dChQ2aHYsPBwUFffPEFydhTqGLFipo5c6YiIyOfmYQsPj5exYoVY7T2KdamTRsdP35ckZGRT8R1Fv/8848+++wzvkQ/YZydnbVo0SLrLUSedPQjwByMkAEAAACASVj2HgAAAABMQkIGAAAAACYhIQMAAAAAk5CQAQAAAIBJSMgAAAAAwCQkZAAAAABgEhIyAAAAADAJCRkAAAAAmISEDAAAAABM8v8AOsh9k2gDH44AAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 880x396 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "ports = [53, 443, 3389, 80]\n",
    "share = (\n",
    "    df[df[\"Label\"].isin([\"Benign\", \"Infilteration\"])]\n",
    "    .assign(port=lambda d: d[\"Dst Port\"].where(d[\"Dst Port\"].isin(ports), other=-1))\n",
    "    .groupby(\"Label\")[\"port\"].value_counts(normalize=True)\n",
    "    .unstack(fill_value=0)\n",
    ")\n",
    "share = share.rename(columns={-1: \"other\", 53: \"53 (DNS)\", 443: \"443 (HTTPS)\", 3389: \"3389 (RDP)\", 80: \"80 (HTTP)\"})\n",
    "share = share[[\"53 (DNS)\", \"443 (HTTPS)\", \"3389 (RDP)\", \"80 (HTTP)\", \"other\"]]\n",
    "print((share * 100).round(1).to_string())\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(8, 3.6))\n",
    "x = np.arange(share.shape[1])\n",
    "w = 0.38\n",
    "ax.bar(x - w / 2, share.loc[\"Benign\"] * 100, w, color=\"#c9d3da\", label=\"Benign\")\n",
    "ax.bar(x + w / 2, share.loc[\"Infilteration\"] * 100, w, color=\"#b5652b\", label=\"Infiltration\")\n",
    "ax.set_xticks(x, share.columns)\n",
    "ax.set_ylabel(\"% of flows\")\n",
    "ax.set_title(\"Destination ports: Benign vs Infiltration\")\n",
    "ax.legend(frameon=False)\n",
    "plt.tight_layout()\n",
    "plt.savefig(FIG_DIR / \"iot-benign-vs-infiltration-ports.png\", dpi=110)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bb75ac7e",
   "metadata": {},
   "source": [
    "## 4. Target and split\n",
    "\n",
    "The task is **binary detection**, 0 = benign, 1 = attack. I keep the attack family on the side, only for stratification and error analysis.\n",
    "\n",
    "I split **after** cleaning: 70% training, 15% validation, 15% test, stratified by attack family. The validation set chooses the model and the decision threshold. The test set is used once, at the end."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "6c26bd8d",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-19T11:01:11.850655Z",
     "iopub.status.busy": "2026-10-19T11:01:11.850505Z",
     "iopub.status.idle": "2026-10-19T11:01:12.345255Z",
     "shell.execute_reply": "2026-10-19T11:01:12.344314Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "train       123,730 rows   attack share 59.9%\n",
      "validation   26,514 rows   attack share 59.9%\n",
      "test         26,514 rows   attack share 59.9%\n",
      "Shared feature vectors train/test: 0\n",
      "Shared feature vectors train/val : 0\n"
     ]
    }
   ],
   "source": [
    "X = df[features]\n",
    "y = (df[\"Label\"] != \"Benign\").astype(int).to_numpy()\n",
    "family = df[\"Label\"].to_numpy()\n",
    "\n",
    "X_train, X_tmp, y_train, y_tmp, fam_train, fam_tmp = train_test_split(\n",
    "    X, y, family, test_size=0.30, stratify=family, random_state=SEED)\n",
    "X_val, X_test, y_val, y_test, fam_val, fam_test = train_test_split(\n",
    "    X_tmp, y_tmp, fam_tmp, test_size=0.50, stratify=fam_tmp, random_state=SEED)\n",
    "\n",
    "for name, part, yy in [(\"train\", X_train, y_train), (\"validation\", X_val, y_val), (\"test\", X_test, y_test)]:\n",
    "    print(f\"{name:<11}{len(part):>8,} rows   attack share {yy.mean():.1%}\")\n",
    "\n",
    "# Guard against leakage: no feature vector may appear in two splits.\n",
    "key = lambda d: set(pd.util.hash_pandas_object(d, index=False))\n",
    "print(\"Shared feature vectors train/test:\", len(key(X_train) & key(X_test)))\n",
    "print(\"Shared feature vectors train/val :\", len(key(X_train) & key(X_val)))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "69569b63",
   "metadata": {},
   "source": [
    "## 5. Metrics\n",
    "\n",
    "Accuracy depends on the attack share, which this sample fixed artificially at about 70%. I therefore compare models on:\n",
    "\n",
    "- **Macro F1** (main metric): benign and attack count equally;\n",
    "- **detection rate** (recall on attacks) and **false-alarm rate** (benign flows flagged as attacks), the two numbers a security team actually lives with;\n",
    "- **ROC-AUC** and **PR-AUC**, which do not depend on a single threshold."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "0d006335",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-19T11:01:12.347111Z",
     "iopub.status.busy": "2026-10-19T11:01:12.346493Z",
     "iopub.status.idle": "2026-10-19T11:01:12.350622Z",
     "shell.execute_reply": "2026-10-19T11:01:12.349840Z"
    }
   },
   "outputs": [],
   "source": [
    "def scores(y_true, proba, threshold=0.5):\n",
    "    pred = (proba >= threshold).astype(int)\n",
    "    return {\n",
    "        \"accuracy\": accuracy_score(y_true, pred),\n",
    "        \"macro_f1\": f1_score(y_true, pred, average=\"macro\"),\n",
    "        \"balanced_acc\": balanced_accuracy_score(y_true, pred),\n",
    "        \"detection_rate\": recall_score(y_true, pred),\n",
    "        \"false_alarm_rate\": 1 - recall_score(y_true, pred, pos_label=0),\n",
    "        \"roc_auc\": roc_auc_score(y_true, proba),\n",
    "        \"pr_auc\": average_precision_score(y_true, proba),\n",
    "    }"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e6d1c5c5",
   "metadata": {},
   "source": [
    "## 6. Three model families\n",
    "\n",
    "I compare a linear model and two tree ensembles, trained under the same rules:\n",
    "\n",
    "- **Logistic Regression**: a linear baseline. Flow statistics are extremely skewed (durations range from microseconds to two minutes), so I apply a signed log transform, then standardise. Both steps live inside the pipeline and are fitted on training data only.\n",
    "- **Random Forest**: a strong, widely used baseline for tabular data.\n",
    "- **Gradient boosting**: I use `HistGradientBoostingClassifier`, scikit-learn's histogram-based implementation. It is much faster than the classic `GradientBoostingClassifier` on 120k rows and handles skewed features without scaling. Its early stopping uses an internal slice of the training set, never the validation set."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "6cc652cb",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-19T11:01:12.352462Z",
     "iopub.status.busy": "2026-10-19T11:01:12.351857Z",
     "iopub.status.idle": "2026-10-19T11:02:31.706032Z",
     "shell.execute_reply": "2026-10-19T11:02:31.705133Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Validation results at the default 0.5 threshold\n",
      "                     accuracy  macro_f1  balanced_acc  detection_rate  false_alarm_rate  roc_auc  pr_auc\n",
      "model                                                                                                   \n",
      "Logistic Regression    0.8084    0.8041        0.8110          0.7978            0.1759   0.8916  0.9274\n",
      "Random Forest          0.8512    0.8456        0.8466          0.8703            0.1771   0.9462  0.9665\n",
      "Gradient Boosting      0.8836    0.8786        0.8777          0.9076            0.1523   0.9646  0.9770\n"
     ]
    }
   ],
   "source": [
    "signed_log = FunctionTransformer(lambda a: np.sign(a) * np.log1p(np.abs(a)), feature_names_out=\"one-to-one\")\n",
    "\n",
    "candidates = {\n",
    "    \"Logistic Regression\": make_pipeline(signed_log, StandardScaler(), LogisticRegression(max_iter=3000, random_state=SEED)),\n",
    "    \"Random Forest\": RandomForestClassifier(n_estimators=200, min_samples_leaf=2, n_jobs=1, random_state=SEED),\n",
    "    \"Gradient Boosting\": HistGradientBoostingClassifier(max_iter=400, early_stopping=True, validation_fraction=0.1, random_state=SEED),\n",
    "}\n",
    "\n",
    "val_rows = []\n",
    "fitted = {}\n",
    "for name, model in candidates.items():\n",
    "    model.fit(X_train, y_train)\n",
    "    fitted[name] = model\n",
    "    val_rows.append({\"model\": name, **scores(y_val, model.predict_proba(X_val)[:, 1])})\n",
    "\n",
    "val_table = pd.DataFrame(val_rows).set_index(\"model\")\n",
    "print(\"Validation results at the default 0.5 threshold\")\n",
    "print(val_table.round(4).to_string())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "e7ca71f8",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-19T11:02:31.707880Z",
     "iopub.status.busy": "2026-10-19T11:02:31.707367Z",
     "iopub.status.idle": "2026-10-19T11:02:31.859199Z",
     "shell.execute_reply": "2026-10-19T11:02:31.858097Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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jBiBFy9eoGzZsli8eDFevXqVa9mVK1fG0KFD0bdvX4SEhKB+/fpIT0/HpUuXEBMTU+DgwdXVFQcPHsS+ffugVCpRrlw5acVBbf79919p+dDExERERkbin3/+wdSpU6U848ePR6NGjfDJJ5/giy++kFZZrFevnnSTZfv27VGvXj34+/tj+vTpsLe3x4IFC5CQkIDQ0FAAr2/0XLZsGbp06QInJyfcv38fCxYsQOPGjWFkZCTVf8WKFdi2bRscHBxQqlSpHH8NPi82NjYYPHgwpk6dCiMjI3h4eCAqKgqXLl0CALXFXIiIiIjo/1xdXaW1DnISGxurkVaxYkWsX78+z/J1dXXzXDTN398f/v7+eZZFRaNYAjIAmDZtGpo0aYJFixZhyJAhSE5OhrW1NWrXro1ffvlF62ov2U2aNAkPHz7EpEmTAADdunXD/Pnz0aFDB7V8v/zyC4YNG4bRo0fDyMgI/fr1g6enJ0JCQnItf/78+XBxcZGWZzczM4OLiwu6d+9e4PaGh4dj8ODB8PX1xdOnTxEREYGAgIAc80dHRyM6OhrA6281KlasiGXLlqF///5Sntq1a2Pv3r0YN24cfH19YWpqio4dO2L27NnSVFBdXV3s3LkTo0aNQkhICJ4/f45atWph7969qF27NoDXb1AdHR2MHz8eDx48gI2NDVq1aqU2FXT06NG4cuUKPv30UyQlJWn9Ue+CmD59OtLT0zFt2jRkZWWhS5cuGDt2LIYNG6bxK/JERERERB8rhRBCyF0J+jj07dsXR44cwfXr1/O9z507d+Do6IgVvSrD1kw/7x2IiIiIZNbup3/krgJ9QIpthIw+br/99huOHj2K2rVrIysrC9u3b8eaNWs05kATEREREX3MGJBRsTAzM8P27dsxY8YMpKWloVy5cpgzZw5GjBghd9WIiIiIiN4bDMioWNSuXRvHjh2TuxpERERERO81LndHREREREQkEwZkREREREREMmFARkREREREJBMGZERERERERDJhQEZERERERCQTBmREREREREQyYUBGREREREQkEwZkREREREREMmFARkREREREJBMGZERERERERDJhQEZERERERCQTBmREREREREQyYUBGREREREQkEwZkREREREREMmFARkREREREJBMGZERERERERDJhQEZERERERCQTBmREREREREQyYUBGREREREQkEwZkREREREREMmFARkREREREJBMGZERERERERDJhQEZERERERCQTBmREREREREQyYUBGREREREQkEz25K0CUH14zD6BMmTJyV4OIiIiIqEhxhIyIiIiIiEgmDMiIiIiIiIhkwoCMiIiIiIhIJgzIiIiIiIiIZMKAjIiIiIiISCYMyIiIiIiIiGTCgIyIiIiIiEgmDMiIiIiIiIhkwoCMiIiIiIhIJgzIiIiIiIiIZMKAjIiIiIiISCYMyIiIiIiIiGTCgIyIiIiIiEgmDMiIiIiIiIhkwoCMiIiIiIhIJgzIiIiIiIiIZKIndwWI8uN0/HXcS0qTuxpERETvjXpuleSuAhEVAY6QERERERERyYQBGRERERERkUwYkBEREREREcmEARkREREREZFMGJARERERERHJhAEZERERERGRTBiQERERERERyYQBGRERERERkUwYkBEREREREcmEARkREREREZFMGJARERERERHJhAEZERERERGRTBiQERERERERyYQBGRERERERkUwYkBEREREREcmEARkREREREZFMGJARERERERHJhAEZERERERGRTBiQERERERERyYQBGRERERERkUwYkBEREREREcmEARkREREREZFMGJARERERERHJhAEZERERERGRTBiQERERERERyYQBGRERERERkUwYkBEREREREcmEARkRERHRRyY+Ph4+Pj4wNTVFyZIlMXr0aLx69SrP/R4/foygoCA4OTnB1NQUbm5uWLJkSY75s7KyULt2bSgUCkRHR2tsf/HiBSZNmoRy5crB0NAQTk5OCAkJeau2EX1o9OSuABERERG9O4mJifDy8kKlSpWwadMm3L17F8HBwUhNTcXChQtz3bd79+6Ij49HeHg4nJycsHPnTgwePBi6uroYOHCgRv4ff/wRd+/e1VpWVlYWOnXqhGvXrmHy5MkoV64cbt68iYsXLxZJO4k+FB9cQBYWFoYpU6ZIz62treHq6orQ0FC0a9fundbFw8MDHh4eWL58+Ts97puWL1+O/v37a6Sbmpri2bNnMtRI05kzZ7BlyxaMHj0aJiYmcleHiIjoo7ZkyRKkpKRg8+bNsLa2BgBkZGRgyJAhCA0NRalSpbTud//+fcTExCAiIgIBAQEAAC8vL5w8eRLr1q3TCMgePXqECRMmYNasWQgMDNQoLyIiAn/88Qcu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ERERERERyYQBGRERERERkUwYkBEREREREcmEARkREREREZFMGJARERERERHJhAEZERERERGRTBiQERERERERyYQBGRERERERkUwYkBEREREREcmEARkREREREZFMGJARERERERHJhAEZERERERGRTBiQERERERERyYQBGRERERERkUwYkBEREREREcmEARkREREREZFMGJARERERERHJhAEZERERERGRTBiQERERERERyYQBGRER0UckPj4ePj4+MDU1RcmSJTF69Gi8evUqz/0eP36MoKAgODk5wdTUFG5ubliyZIlGvnv37sHX1xfm5uawtrbGgAEDkJKSkmO5p06dgq6uLszMzN6qXUREHyo9uStARERE70ZiYiK8vLxQqVIlbNq0CXfv3kVwcDBSU1OxcOHCXPft3r074uPjER4eDicnJ+zcuRODBw+Grq4uBg4cCABIT09H69atAQCRkZFITU3FqFGj0Lt3b2zfvl2jTCEEhg0bBjs7Ozx79qzoG0xE9AEo8AhZWFjYO/sWKzY2FgqFAn/++We+9wkLC8OxY8c00hUKBWbNmlUk9VE9TE1N4e7uju+//x6ZmZlvVfb7KiAgAG5ubnJXg4iIisCSJUuQkpKCzZs3o3Xr1ggMDMTMmTOxZMkS3Lt3L8f97t+/j5iYGISHhyMgIABeXl6YNWsWmjVrhnXr1kn5oqOjcf78eURHR6NDhw7o2bMnli1bhh07duDEiRMa5UZERODRo0cIDAwslvYSEX0I3uspi7Vq1cLx48fh6uqa732mTJmiNSA7fvw4+vTpUyT1ioiIwPHjx7Fp0ya4u7tjxIgR+O6774qk7PfNxIkTERkZKXc1iIioCOzatQve3t6wtraW0nr06IGsrCzs3bs3x/3S09MBAJaWlmrplpaWEEKolV+9enW4uLhIaT4+PrC2tsbOnTvV9k1KSsLYsWMxd+5cGBgYvFW7iIg+ZO91QGZhYYEGDRrA1NT0rctq0KABHBwciqBWgJubGxo0aIDWrVtj9erVqFKlCiIiIoqk7PxIS0t7Z8eqUKECqlev/s6OR0RExSc+Ph5VqlRRS7OysoKDgwPi4+Nz3M/R0RGtWrVCeHg44uLi8PTpU2zYsAF79+7F0KFDcy1foVCgSpUqGuVPmDABtWvXxieffFIELSMi+nAVS0B27tw5tG7dGqamprC0tES3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S0NMTIzWKRA9e/aEiYkJpk6dCj8/PxgZGaFWrVro0qVLgftDX18foaGhGDhwIGJjY+Hp6Ynff/9dWkHx8ePHKFGiBBo0aKBW/vTp05Geno5p06YhKysLXbp0wdixYzFs2DCN++u0Ua1YuHjxYty8eROWlpZwc3ND//79AQAlS5ZEyZIlMW3aNNy9exeWlpZo2rQpVq9eDV1d3Ty3a+Po6Jiv15eIiIiIiPKmEEIIuSuh0qxZM+jq6iImJkbuqsimb9++OHLkCK5fvy53Vd4Ld+7cgaOjI37ddwj2JUvKXR0iovdCPbdKcleBiIiKSJEv6pFfGzduxK1bt+Du7o7U1FRERkbi8OHDar8L9l/322+/4ejRo6hduzaysrKwfft2rFmzRmMuPxERERER/TfJFpCZmZlh1apVuHz5Ml69eoUqVapg9erV6Ny5s1xVeufMzMywfft2zJgxA2lpaShXrhzmzJmDESNGyF01IiIiIiJ6B96rKYtE2XHKIhGRJk5ZJCL67yjyZe+JiIiIiIgofxiQERERERERyYQBGRERERERkUwYkBEREREREcmEARkREREREZFMGJARERERERHJhAEZERERERGRTBiQERERERERyYQBGRERERERkUwYkBEREREREcmEARkREREREZFMGJARERERERHJhAEZERERERGRTBiQERERERERyYQBGRERERERkUwYkBEREREREcmEARkREREREZFMGJARERERERHJhAEZERERERGRTBiQERERERERyYQBGRERERERkUwYkBEREREREcmEARkREREREZFMGJARERERERHJhAEZERERERGRTPTkrgBRftSsUg5lypSRuxpEREREREWKI2REREREREQyYUBGREREREQkEwZkREREREREMmFARkREREREJBMGZERERERERDJhQEZERERERCQTBmREREREREQyYUBGREREREQkEwZkREREREREMmFARkREREREJBM9uStAlJuMjAwAQEJCgsw1ISIiIiIqmJIlS0JPL/eQiwEZvdeuX78OAKhXr57MNSEiIiIiKpjbt2+jTJkyueZhQEbvNUdHRwDAsWPHpL8pbwkJCahXrx5OnDgBBwcHuavzQWHfFQ77rXDYb4XDfis89l3hsN8Kh/32eoQsLwzI6L1mZGQE4HVglte3C6TJwcGB/VZI7LvCYb8V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fTx58gTR0dFYv359ruWHhYWhc+fO8Pf3h7+/Py5evIjQ0FD4+vrC3d39rdqXmpoqjVbcvHkTKSkpUvDXvHlztXu/3tS+fXvUq1cP/v7+mD59Ouzt7bFgwQIkJCQgNDT0reoEAJUrV4auri5++eUX6OnpQU9PL8ffUtPmu+++g5eXF3r27Ak/Pz8olUrcuXMH+/btQ//+/dV+Xy47XV1d9OjRA8uXL8eDBw80gmsfHx8MHToU33zzDRo2bIidO3fiwIEDBW7jiBEjsGjRIrRt2xZjx45FYmIiJk+eDBsbGymPpaUl6tati+nTp8POzg56enqYPn06LC0t1UbS8ttf1atXR9euXREcHIy0tDS4uLhg9erVOHbsGLZu3VrgNmT3+eefQ6lUokGDBlAqlTh69Cj+/vtv6QeefXx80KFDB7Rp0wajR49G9erV8fz5c5w/fx5XrlzB0qVLAbyeZvvLL79g7dq1qFSpEmxtbfMMpInoPSXzoiJERPSBeXOVxZxkX2Xx/v37onPnzsLc3FzY29uLMWPGiJ9//lkAEA8fPpTypaWlibFjxwonJyehr68vypQpIwIDA6Xtua0sFx0dLapXry4MDAxEyZIlxYgRI0RaWlqu9cxp5b03Xb9+XetKjABETExMruU/evRIBAQECGtra2FoaCgaNmwoYmNj1fI0b95ctG/fXi3t9OnT+Sp/yZIlonz58kJPT0+o/qXn1KZOnTqJ5s2bq6WdPHlStGvXTlhaWgpjY2NRqVIlERQUlOvqjirHjx8XAISZmZlITU1V25aRkSFGjhwp7OzshLm5uejWrZv4/fffBQARFRUl5ctrlUUhhDh06JDw8PAQBgYGwtXVVWzfvl3j/Lp8+bLw8vISJiYmwtHRUXz33Xdaz9P89ldqaqoYMWKEKFmypDAwMBDVq1cXGzduVCtLW10TExMFABEREZFjvy1fvlw0btxYWFtbCyMjI1G1alUxf/58tTwvX74UU6ZMEZUqVRIGBgbCzs5OtGjRQqxcuVLKk5ycLPz8/ISNjU2uq04S0ftPIYQQ7zwKJCIiIiIiIt5DRkREREREJBcGZERERERERDJhQEZERERERCQTBmREREREREQyYUBGREREREQkEwZkREREREREMmFARkREREREJBMGZERERERERDJhQEZERERERCQTBmREREREREQyYUBGREREREQkEwZkREREREREMmFARkREREREJJP/AUG0P2Y3DBKsAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 880x374 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "order = val_table[\"macro_f1\"].sort_values().index\n",
    "fig, ax = plt.subplots(figsize=(8, 3.4))\n",
    "ax.barh(order, val_table.loc[order, \"macro_f1\"], color=[\"#c9d3da\", \"#c9d3da\", \"#b5652b\"])\n",
    "for i, v in enumerate(val_table.loc[order, \"macro_f1\"]):\n",
    "    ax.text(v + 0.004, i, f\"{v:.3f}\", va=\"center\")\n",
    "ax.set_xlim(0.7, 0.92)\n",
    "ax.set_xlabel(\"Macro F1 on the validation set\")\n",
    "ax.set_title(\"Model comparison on de-duplicated data\")\n",
    "plt.tight_layout()\n",
    "plt.savefig(FIG_DIR / \"iot-model-comparison.png\", dpi=110)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8851bb3c",
   "metadata": {},
   "source": [
    "Gradient boosting is ahead on every metric, including the false-alarm rate. Logistic Regression is clearly behind: the boundary between benign and attack traffic is not linear in these features.\n",
    "\n",
    "I keep gradient boosting.\n",
    "\n",
    "## 7. Light tuning on validation\n",
    "\n",
    "I try a small grid of settings that control how complex each tree can be. The grid is deliberately small: the aim is to check that the default is reasonable, not to squeeze the last decimal out of the validation set."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "64572cd4",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-19T11:02:31.860622Z",
     "iopub.status.busy": "2026-10-19T11:02:31.860415Z",
     "iopub.status.idle": "2026-10-19T11:03:24.042609Z",
     "shell.execute_reply": "2026-10-19T11:03:24.041803Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      " learning_rate  max_leaf_nodes  l2_regularization  iterations  macro_f1  pr_auc\n",
      "          0.10              31                0.0         377    0.8786  0.9770\n",
      "          0.10              63                0.0         236    0.8772  0.9769\n",
      "          0.05              63                1.0         464    0.8778  0.9770\n",
      "          0.05             127                1.0         228    0.8794  0.9771\n",
      "\n",
      "Selected: {'learning_rate': 0.05, 'max_leaf_nodes': 127, 'l2_regularization': 1.0}\n"
     ]
    }
   ],
   "source": [
    "grid = [\n",
    "    {\"learning_rate\": 0.1, \"max_leaf_nodes\": 31, \"l2_regularization\": 0.0},\n",
    "    {\"learning_rate\": 0.1, \"max_leaf_nodes\": 63, \"l2_regularization\": 0.0},\n",
    "    {\"learning_rate\": 0.05, \"max_leaf_nodes\": 63, \"l2_regularization\": 1.0},\n",
    "    {\"learning_rate\": 0.05, \"max_leaf_nodes\": 127, \"l2_regularization\": 1.0},\n",
    "]\n",
    "tuning = []\n",
    "for params in grid:\n",
    "    m = HistGradientBoostingClassifier(max_iter=600, early_stopping=True, validation_fraction=0.1,\n",
    "                                       random_state=SEED, **params).fit(X_train, y_train)\n",
    "    s = scores(y_val, m.predict_proba(X_val)[:, 1])\n",
    "    tuning.append({**params, \"iterations\": m.n_iter_, \"macro_f1\": s[\"macro_f1\"], \"pr_auc\": s[\"pr_auc\"]})\n",
    "    fitted[str(params)] = m\n",
    "\n",
    "tuning = pd.DataFrame(tuning)\n",
    "print(tuning.round(4).to_string(index=False))\n",
    "best_params = grid[int(tuning[\"macro_f1\"].idxmax())]\n",
    "best_model = fitted[str(best_params)]\n",
    "print(\"\\nSelected:\", best_params)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7343d2e4",
   "metadata": {},
   "source": [
    "## 8. Choosing the decision threshold\n",
    "\n",
    "A probability of 0.5 is not sacred. I scan thresholds **on the validation set only** and keep the one that maximises Macro F1. The curve also shows the trade-off a SOC would actually tune: fewer false alarms means more missed attacks."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "6d1d2ae1",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-19T11:03:24.044473Z",
     "iopub.status.busy": "2026-10-19T11:03:24.043938Z",
     "iopub.status.idle": "2026-10-19T11:03:27.649352Z",
     "shell.execute_reply": "2026-10-19T11:03:27.648527Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Chosen threshold: 0.48\n",
      " threshold  macro_f1  detection_rate  false_alarm_rate\n",
      "      0.30    0.8543          0.9828            0.3028\n",
      "      0.48    0.8805          0.9170            0.1605\n",
      "      0.50    0.8794          0.9067            0.1490\n",
      "      0.70    0.8526          0.7844            0.0430\n"
     ]
    },
    {
     "data": {
      "image/png": "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qZWXl+Pxxx/H+++/Dw8Pj1rrLVq0CCUlJTh06BBUKhW+++47PPTQQzhx4gSCgoJuW7xERJbSoKTsxvWebqYppyInoupcXV3Nvpmn5ufv749Dhw416zH69u3brLOGUtO5fqZhkUhkWpi8Ph544AEkJCRg165d2LdvH/r27YvFixdj4cKFKCoqQo8ePbBly5Zq+13fU3XjTMcikQgGg6HWY37zzTd4+umn64xrz5496NevX43bPDw8qi2hkpGRUWvCpVarERMTg0ceecRUVhWflZUVEhMTUVZWhg0bNiAmJsY022inTp1w+PBhbNq0qVUssUNE1KCkzMXFpdo6TXW5fippIiKilsDe3h6LFi2qs8coJCQECoUChw8fxsSJExt8DAcHB3h6euLPP/809ZYJgoCjR4/iwQcfNNVzd3fH1KlTMXXqVNNwyYULF6Jz58744Ycf4O7u3qQ9W7c6fLFXr17Yv38/Zs2aZSrbv38/evXqVWtbNw7DreoVW7duHdzd3U09hxKJxKyeRCKpM8EkIrqbNCgp+/zzzxuUlBEREbU0Dg4ONS5sfz25XI758+dj7ty5sLKyQs+ePaFWqxEfH48JEybU6zhz587FihUrEBQUhMjISGzcuBEJCQmmJR6WLFmCrl27ol27diguLsbevXsRHh4OAHj88cfx5ptv4sEHH8TSpUvh7e2N+Ph4bN++HatXr4ajo2Ojzv1Why++8MILiIqKwtq1azFixAh8++23OH36ND777DNTnVdffRWpqan48ssvYW1tjfbt25u14ejoCCsrK1N5eHg42rRpg6effhpvvPEGHB0d8d133+H48ePsJSOiVqNBSdnkyZObKQwiIqLbo6CgAKtWrcKCBQvg4OBQa71FixZBLBbj1VdfRXp6Ory9vTF79ux6H2f27NnQaDR4/vnnkZOTg8jISOzevRteXl4AjEMP58+fj4SEBNja2mLAgAF49913AQC2trb47bffMH/+fIwZMwZFRUXw9fXF0KFDLbq+Wu/evbF161YsWrQICxYsQEhICH788UezNcrUajWSkpLq3aa1tTV2796N+fPnY/jw4SgpKUFoaCi+/fbbWodREhHdbURCQwbA38VSUlLg6+uL5ORk+Pj4WDocIiJqJvy8JyKilqZBPWU3+u2337Bp0ybExsairKys2vZz587dSvNERERERER3PXFj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0tPT212fbPHixdi1axemTZuGlStXwuVy4Q9/+ANSU1Ollr2uGDFiBHw+H7Zv345x48YhKioKw4cP79I1O/r9/fSnP8Wtt96K7OxsKBQK7NmzB2q1usOtZACgUCiwatUqLFq0CImJiZg+fTq+/PJLbN68GQ8//HCbCSAAXH/99bjqqqswc+ZMbN68GUajERs3bgyZfZKIiDqHSRkREbXL6XRKU9hHREQgPT0dkydPxjvvvIOsrKyQYx955BFYLBZs3boVO3bsgEqlQmZmJm666SZpnFVcXBw+//xzLF++HMuWLUNjYyPS09Mxf/78Nu+flJSEpKQkbNy4EXa7HdHR0Rg/fjzeeOMNKBSKNs+xWq345z//iaVLl2LmzJlQKBSYOnUqtm7dGjIdfmfdfPPNmD9/PjZu3IjS0lJMmDABhw8f7vJ1O/L9/fSnP8WePXtw5swZyOVyjB49Gn/729+kqe47auHChVCpVNi6dSt27twJs9mMtWvXYsWKFe2eI5PJ8N5772HevHn47W9/i5iYGCxcuBAlJSV49913u/LoRESDnkwIIcIdBBERERER0WDFMWVERERERERhxKSMiIiIiIgojJiUERERERERhRGTMiIiIiIiojBiUkZERERERBRGTMqIiIiIiIjCiEkZERERERFRGDEpIyIiIiIiCiMmZURERERERGHEpIyIiIiIiCiMmJQRERERERGFEZMyIiIiIiKiMGJSRkREREREFEb/H8HXvnsp0uoIAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 880x396 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "p_val = best_model.predict_proba(X_val)[:, 1]\n",
    "thresholds = np.round(np.arange(0.05, 0.96, 0.01), 2)\n",
    "curve = pd.DataFrame([{\"threshold\": t, **scores(y_val, p_val, t)} for t in thresholds])\n",
    "THRESHOLD = float(curve.loc[curve[\"macro_f1\"].idxmax(), \"threshold\"])\n",
    "print(\"Chosen threshold:\", THRESHOLD)\n",
    "print(curve[curve[\"threshold\"].isin([0.3, 0.5, THRESHOLD, 0.7])][[\"threshold\", \"macro_f1\", \"detection_rate\", \"false_alarm_rate\"]].round(4).to_string(index=False))\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(8, 3.6))\n",
    "ax.plot(curve[\"threshold\"], curve[\"detection_rate\"], color=\"#b5652b\", label=\"detection rate (attacks caught)\")\n",
    "ax.plot(curve[\"threshold\"], curve[\"false_alarm_rate\"], color=\"#5b6b77\", label=\"false-alarm rate (benign flagged)\")\n",
    "ax.axvline(THRESHOLD, color=\"black\", lw=0.8, ls=\"--\")\n",
    "ax.text(THRESHOLD + 0.01, 0.5, f\"chosen = {THRESHOLD:.2f}\", fontsize=9)\n",
    "ax.set_xlabel(\"Decision threshold\")\n",
    "ax.set_ylabel(\"Rate (validation)\")\n",
    "ax.set_title(\"Detection vs false alarms\")\n",
    "ax.legend(frameon=False, loc=\"center left\")\n",
    "plt.tight_layout()\n",
    "plt.savefig(FIG_DIR / \"iot-threshold-tradeoff.png\", dpi=110)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "549210cf",
   "metadata": {},
   "source": [
    "## 9. Diagnostics on validation\n",
    "\n",
    "Two questions before touching the test set:\n",
    "\n",
    "1. **Does the model just read the destination port?** Many attack families use one fixed port, so the model could memorise ports instead of behaviour. I retrain without `Dst Port`.\n",
    "2. **Where do the errors come from?** I measure how well the model separates Benign from Infiltration alone, and how it performs once Infiltration is set aside."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "c74a8bee",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-19T11:03:27.651047Z",
     "iopub.status.busy": "2026-10-19T11:03:27.650491Z",
     "iopub.status.idle": "2026-10-19T11:03:41.520865Z",
     "shell.execute_reply": "2026-10-19T11:03:41.519839Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "                  macro_f1  detection_rate  false_alarm_rate  roc_auc\n",
      "all features        0.8805          0.9170            0.1605   0.9648\n",
      "without Dst Port    0.8733          0.9071            0.1635   0.9614\n",
      "\n",
      "ROC-AUC, Benign vs Infiltration only : 0.895\n",
      "Macro F1 with Infiltration set aside : 0.9188\n"
     ]
    }
   ],
   "source": [
    "no_port = [f for f in features if f != \"Dst Port\"]\n",
    "m_np = HistGradientBoostingClassifier(max_iter=600, early_stopping=True, validation_fraction=0.1,\n",
    "                                      random_state=SEED, **best_params).fit(X_train[no_port], y_train)\n",
    "s_full = scores(y_val, p_val, THRESHOLD)\n",
    "s_np = scores(y_val, m_np.predict_proba(X_val[no_port])[:, 1], THRESHOLD)\n",
    "\n",
    "bi = np.isin(fam_val, [\"Benign\", \"Infilteration\"])\n",
    "no_inf = fam_val != \"Infilteration\"\n",
    "diag = pd.DataFrame({\n",
    "    \"all features\": s_full,\n",
    "    \"without Dst Port\": s_np,\n",
    "}).T[[\"macro_f1\", \"detection_rate\", \"false_alarm_rate\", \"roc_auc\"]]\n",
    "print(diag.round(4).to_string())\n",
    "print()\n",
    "print(f\"ROC-AUC, Benign vs Infiltration only : {roc_auc_score(y_val[bi], p_val[bi]):.3f}\")\n",
    "print(f\"Macro F1 with Infiltration set aside : {f1_score(y_val[no_inf], (p_val[no_inf] >= THRESHOLD).astype(int), average='macro'):.4f}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bbac81a2",
   "metadata": {},
   "source": [
    "Removing the port costs a little, but performance stays close: the model relies mostly on how flows behave, not only on where they go.\n",
    "\n",
    "The second result locates the problem. Setting Infiltration aside raises Macro F1 from 0.88 to 0.92. What remains is mostly benign flows flagged because they resemble Infiltration: the threshold was chosen with Infiltration present. Separating Benign from Infiltration alone reaches a ROC-AUC of only about 0.90, far below the other families. The audit already showed why: the two classes look alike.\n",
    "\n",
    "## 10. Final evaluation on the test set (run once)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "c8b13194",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-19T11:03:41.522532Z",
     "iopub.status.busy": "2026-10-19T11:03:41.522036Z",
     "iopub.status.idle": "2026-10-19T11:03:42.004988Z",
     "shell.execute_reply": "2026-10-19T11:03:42.004167Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{\n",
      " \"accuracy\": 0.8826,\n",
      " \"macro_f1\": 0.8769,\n",
      " \"balanced_acc\": 0.8744,\n",
      " \"detection_rate\": 0.9161,\n",
      " \"false_alarm_rate\": 0.1674,\n",
      " \"roc_auc\": 0.9641,\n",
      " \"pr_auc\": 0.9766\n",
      "}\n",
      "Confusion matrix [[TN, FP], [FN, TP]]: [[8861, 1781], [1332, 14540]]\n",
      "Attack precision: 0.8909\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 506x440 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "p_test = best_model.predict_proba(X_test)[:, 1]\n",
    "pred_test = (p_test >= THRESHOLD).astype(int)\n",
    "test_scores = scores(y_test, p_test, THRESHOLD)\n",
    "cm = confusion_matrix(y_test, pred_test)\n",
    "print(json.dumps({k: round(v, 4) for k, v in test_scores.items()}, indent=1))\n",
    "print(\"Confusion matrix [[TN, FP], [FN, TP]]:\", cm.tolist())\n",
    "print(f\"Attack precision: {precision_score(y_test, pred_test):.4f}\")\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(4.6, 4))\n",
    "im = ax.imshow(cm, cmap=\"Oranges\")\n",
    "for (i, j), v in np.ndenumerate(cm):\n",
    "    ax.text(j, i, f\"{v:,}\", ha=\"center\", va=\"center\", color=\"white\" if v > cm.max() / 2 else \"black\", fontsize=11)\n",
    "ax.set_xticks([0, 1], [\"Benign\", \"Attack\"])\n",
    "ax.set_yticks([0, 1], [\"Benign\", \"Attack\"])\n",
    "ax.set_xlabel(\"Predicted\")\n",
    "ax.set_ylabel(\"Actual\")\n",
    "ax.set_title(\"Test set : confusion matrix\")\n",
    "plt.tight_layout()\n",
    "plt.savefig(FIG_DIR / \"iot-test-confusion.png\", dpi=110)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "6480827e",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-19T11:03:42.006288Z",
     "iopub.status.busy": "2026-10-19T11:03:42.006151Z",
     "iopub.status.idle": "2026-10-19T11:03:42.203951Z",
     "shell.execute_reply": "2026-10-19T11:03:42.203034Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "                          correctly classified  test flows\n",
      "family                                                    \n",
      "Infilteration                           0.7499        5321\n",
      "Benign                                  0.8326       10642\n",
      "DDOS attack-HOIC                        0.9994        1714\n",
      "Bot                                     1.0000        1572\n",
      "DoS attacks-GoldenEye                   1.0000        2247\n",
      "DoS attacks-Hulk                        1.0000        2290\n",
      "DoS attacks-SlowHTTPTest                1.0000           6\n",
      "DDOS attack-LOIC-UDP                    1.0000         259\n",
      "DoS attacks-Slowloris                   1.0000        1357\n",
      "FTP-BruteForce                          1.0000           4\n",
      "SSH-Bruteforce                          1.0000        1102\n"
     ]
    },
    {
     "data": {
      "image/png": "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60dGRoaSHxwcTHBw8EvtszZlNnADUKlUxMXFcfToUaKiohgwYAB79uyhXr16WgOmJk2aEBcXx8GDB1m7di2+vr4sXrwYd3d3zpw5o1H2/PnzvP322+zatYspU6awa9cupk6dyt69e2nQoIFGcJiamoqXlxcnTpwgNDSUn376iXnz5uHk5MRPP/30j68zNTWVqVOnag3ctKX/N3j48CHNmzdn9uzZ9OnTh59++omVK1eSkZFB06ZN2bRp03Pr+P7772nYsCEXLlxg5syZ7Nmzh2XLlqFSqWjTpg1paWkvtc/du3cnLi6O2NhYIiIiqFOnDpMmTaJ+/fpag/mwsDDi4uL48ccf8fX15T//+Q9Tpkx5qX0SQgghhHhWxYoVmTx5staRqSdPnhAQEEDHjh1JSUkhJCSELl26cOfOHSDvO3BQUBBffvkl9+7dw8PDg549exbZ1rRp0zh16hQXLlzg1KlTREdHs3z5cgCio6O5ffs2d+7cwcbGhhUrVgB532EXLlzI9OnTS3VdMTExODg44OrqWqrznic1NZX27dtz7tw57t27R/fu3Xn33XcL/TifnJxMRkYGGRkZyjUCzJ07l/379/PLL79w7do17t27x0cffaTke3t7k5qa+kKDIaVRph/Arauri5eXl/K6devWfPDBB/j7+zNo0CC8vb2pUqWKkm9lZaVRvkOHDgwfPpx33nmHnj178ttvv6GrmxerBgYGAnDs2DEqVKgAgK+vLx06dMDDw4N+/fopNz8qKoqbN28SFxeHk5OTUn9gYCC5ubmv7gb8F/vss884fvw4+/bto3nz5kp6586dadOmDYMGDaJZs2bY29trPf/27du8//77NG3alB07dmBoaKjkdevWjcGDB2NgYPBS+1yhQgWNz0+XLl0YMGAATZs2ZcCAAezevVujfLVq1ZTyrVq14o8//mDp0qXMmjXrpfZLCCGEEKKgrl27AnmziJKTkzXyYmNjefToERMmTEBXV5devXrx+eefs3nzZj788EPWr19Pu3btaNOmDZAXmJUrV45z585Ru3btQm1FRkYSERFB+fLlARg7diwrVqxgxIgRXL58GW9vbwwNDfH19eXXX38FYMKECQQHB2Nubl6q64qJiaFFixYaaTo6OkRERLBw4UJu3bpFQEAAq1ev1vhu+DyNGjWiUaNGyutRo0Yxfvx4fv/9dxo0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iYiIYM6cORrlAgIC+OCDD5g1axZ37tzBx8eH2NjYItPDw8MZPnw4o0aNwsTEhKCgILp06cKQIUM06t2yZQtTp04lIiKC0NBQKlSoQJs2bYrs7+DBg8nKyuKDDz5ApVLxzjvvoKury6RJk7hz5w62tra0adOGWbNmlfi9KInBgwdz6dIlvvzySxYtWkTv3r2ZNWsW7733Xonr0NHRYfXq1Tx+/Ji2bdsSGxv73B0/hRBCCCGEKA0d9bPjj0KI1+L69es4Ojryw+6DVChm2qsQQggh/rc1cq/2/ELiX092lRRCCCGEEEKIMk4CNyGEEEIIIYQo4yRwE0IIIYQQQogyTgI3IYQQQgghhCjjJHATQgghxP9r787jakz//4G/TrSc9o2KooSUhEGSpU3RYt9HyL4bYxnGoCxjDMMYjBmG7A0KYydLWUOWUGrsKbKlorQ4df/+6Nv96zhF2Trz8Xo+Hvdj5lzXdV/3+z535bzPdd3XTURESo6JGxERERERkZLjc9yIKljjelYwNzev6DCIiIiISIlxxI2IiIiIiEjJMXEjIiIiIiJSckzciIiIiIiIlBwTNyIiIiIiIiXHxI2IiIiIiEjJcVVJogp2OeEuHqZnV3QYREREpKQc7etUdAikBDjiRkREREREpOSYuBERERERESk5Jm5ERERERERKjokbERERERGRkmPiRkREREREpOSYuBERERERkVJYv349hg4dWtFhfDIXLlxAy5Yt32tfpUncgoKCIJFIIJFIoKKiAj09PTRo0ABjxoxBfHz8e/d74MABuLi4wNjYGFpaWqhduzb8/f1x48aND445MjIS8+bNK3P5xxIQEAB7e/tP1r8gCNi8eTPc3d1haGgINTU1VK9eHd27d8f+/fvL3V9QUBC0tbXf2a5z585wdXV9j4jfLTIyUvz5enNr3779JzkmERER0aewfPlyNG3aFOrq6ujdu7dCfWxsLJycnKCpqQk7OzscO3ZMrj4sLAzW1tbQ1NSEh4cHEhMTSz1WXl4eRowYAX19fRgbG+P777+HIAgAAJlMht69e0NfXx/t27fHixcvxP02b96M8ePHl+u8ZDIZAgMDMXXq1HLt9y43btxA586dYWJiAn19fbi4uODChQultl+/fj2aNWsGPT09VKtWDSNHjkRmZqZCu9zcXNSrVw+mpqZi2f3796GtrS23qaio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3j1YWVnh7t27sLS0REREBKysrFCzZk08fvwY48aNg5eXF7S0tOT627x5s7iSZnFjxozB2bNncfTo0RKnfp47dw6WlpawsrIq87kCHHEjEtna2gIA4uLiYGhoKC6bW9zjx49haGj4Xv3r6urC3Nxc3N78doaIiIioLObOnQupVIoff/wRoaGhkEql4qwhVVVV7N69Gzt37oS+vj5mzpyJHTt2iF9I29raYu3atRg2bBgMDQ1x+fJlbNu2Tex73rx58Pb2Fl8HBgaiYcOGqFOnDho1aoROnTphxIgRcvHs3bsXRkZGaNmyJQDA0dERvr6+qFGjBiIiIsp8r1mHDh2QmJhY7tUWy6JoFc2TJ09i7NixkEql2LhxI4DC0cKaNWuievXqAIDLly+jdevW0NLSQpMmTWBsbCy2LbJnzx5IJBJ06NBBrjwxMRErVqzA9evXYWFhUeLo38aNGzFy5Mhyn4NEeHPMj+h/XFBQEH755ReFb2gWLlyI7777DkeOHEFWVhY6deqEQ4cOiTeTymQy1K5dG02aNMH27dsBFP4RKCgowJEjR8odR3JyMiwsLLD78AmYFJu7TURERFSco32dig7hs1m3bh1Onz79Xg+ofl9z585FlSpVMHz48E9+rAcPHqBt27aIiYmBurp6ufblVEn6IhUUFODs2bMACoe6L168iLlz58LOzg5t2rSBiooKHB0d4e/vj/nz58PExATLli1DSkqK3AMYbW1tsX79euzZswdmZmaoVq0aqlWrVlGnRURERPSfFhAQgICAgM96zOnTp3+2Y1WvXh3x8fHvtS8TN/oiZWdno0WLFgAKn6VhYWEBf39/BAYGiqtN7t+/H5MmTcLkyZORlZWFr776CuHh4WjSpInYz3fffYdbt26hf//+SE9PR2BgIJ/lRkREREQfHadKElUQTpUkIiKisviSpkpS6bg4CRERERERkZJj4kZERERERKTkmLgREREREREpOSZuRERERERESo6JGxERERERkZJj4kZERERERKTk+Bw3ogrWuJ4VzM3NKzoMIiIiIlJiHHEjIiIiIiJSckzciIiIiIiIlBwTNyIiIiIiIiXHxI2IiIiIiEjJMXEjIiIiIiJSclxVkqiCXU64i4fp2RUdBhERESkpR/s6FR0CKQGOuBERERERESk5Jm5ERERERERKjokbERERERGRkmPiRkRE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Q0ND3Lx5s1wP7v5QampqiI+Ph6qq6mc53p49e+QWOCP62CTC+3y9QUQfLDk5GRYWFljfpy6MtT/PPypERPTf4bMqtqJDICIlwhE3IiIiIiIiJcfEjYiIiIiISMkxcSMiIiIiIlJyTNyIiIiIiIiUHBM3IiIiIiIiJcfEjYiIiIiISMnxAdxEFcx9wVGYm5tXdBhEREREpMQ44kZERERERKTkmLgREREREREpOSZuRERERERESo6JGxERERERkZJj4kZERERERKTkmLgREREREREpOSZuRERERERESo6JGxERERERkZJj4kZERERERKTkmLgREREREREpOSZuRERERERESo6JGxERERERkZJj4kZERERERKTkmLgREREREREpOSZuRERERERESq5yRQdA9KWSyWQAgJSUlAqOhIiIiIhKY2pqisqVKz5tqvgIiL5Qd+/eBQA4OjpWcCREREREVJqkpCSYm5tXdBhM3IgqioWFBQDgzJkz4v+TcklJSYGjoyPOnz8PMzOzig6HSsBrpPx4jZQfr5Fy4/WpeKamphUdAgAmbkQVRkNDA0BhAqcM3+JQ6czMzHiNlByvkfLjNVJ+vEbKjdeHuDgJERERERGRkmPiRkREREREpOSYuBFVEF1dXQQGBkJXV7eiQ6FS8BopP14j5cdrpPx4jZQbrw8VkQiCIFR0EERERERERFQ6jrgREREREREpOSZuRERERERESo6JGxERERERkZJj4kZERERERKTkmLgRVYCEhAR4enpCS0sLpqam+O6775CXl1fRYX2RQkND0alTJ5ibm0NLSwuNGjVCcHAw3ly3ac2aNahbty40NDTQsGFD7N27t4Ii/rJlZmbC3NwcEokEFy5ckKvjNapY69evR+PGjaGhoQFjY2N4e3sjOztbrN+zZw8aNmwIDQ0N1K1bF2vXrq3AaL88u3fvRvPmzaGjowMzMzP07NkTd+7cUWjH36PP49atWxgxYgQaNWqEypUrw97evsR2ZbkeGRkZGDx4MAwNDaGjo4Pu3bsjJSXlU58CVQAmbkSfWVpaGtzd3ZGXl4cdO3Zg3rx5WLVqFSZMmFDRoX2RFi9eDE1NTSxatAh79uyBt7c3hg4ditmzZ4tttmzZgqFDh6JXr144cOAAWrRogS5duuDs2bMVGPmXac6cOZDJZArlvEYV68cff8TYsWPRq1cv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",
      "text/plain": [
       "<Figure size 880x484 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "by_family = (\n",
    "    pd.DataFrame({\"family\": fam_test, \"correct\": pred_test == y_test})\n",
    "    .groupby(\"family\")[\"correct\"].agg([\"mean\", \"size\"])\n",
    "    .rename(columns={\"mean\": \"correctly classified\", \"size\": \"test flows\"})\n",
    "    .sort_values(\"correctly classified\")\n",
    ")\n",
    "print(by_family.round(4).to_string())\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(8, 4.4))\n",
    "colors = [\"#b5652b\" if f in (\"Infilteration\", \"Benign\") else \"#c9d3da\" for f in by_family.index]\n",
    "ax.barh(by_family.index, by_family[\"correctly classified\"] * 100, color=colors)\n",
    "for i, (v, n) in enumerate(zip(by_family[\"correctly classified\"], by_family[\"test flows\"])):\n",
    "    ax.text(min(v * 100 + 0.5, 101), i, f\"{v:.1%}  (n={n:,})\", va=\"center\", fontsize=8)\n",
    "ax.set_xlim(0, 118)\n",
    "ax.set_xlabel(\"% of test flows classified correctly\")\n",
    "ax.set_title(\"Test results by traffic family\")\n",
    "plt.tight_layout()\n",
    "plt.savefig(FIG_DIR / \"iot-test-by-family.png\", dpi=110)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e921a8e3",
   "metadata": {},
   "source": [
    "Families with a very small test count (FTP-BruteForce, SlowHTTPTest) only have a handful of distinct flows after de-duplication, so their 100% should be read as \"no error on a few examples\", not as a robust estimate.\n",
    "\n",
    "## 11. What the model relies on\n",
    "\n",
    "Gradient boosting has no built-in impurity importance, so I use **permutation importance on the validation set**: shuffle one feature, measure how much Macro F1 drops. This describes the model's behaviour; it is not a causal statement about attacks."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "6ceb7ab0",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-19T11:03:42.205349Z",
     "iopub.status.busy": "2026-10-19T11:03:42.205209Z",
     "iopub.status.idle": "2026-10-19T11:04:05.854944Z",
     "shell.execute_reply": "2026-10-19T11:04:05.853549Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Fwd Seg Size Min    0.1627\n",
      "Dst Port            0.0749\n",
      "ECE Flag Cnt        0.0295\n",
      "Pkt Len Std         0.0235\n",
      "Pkt Len Var         0.0225\n",
      "Bwd Pkt Len Std     0.0193\n",
      "Fwd Pkt Len Std     0.0157\n",
      "Fwd Pkts/s          0.0135\n",
      "Fwd Pkt Len Max     0.0117\n",
      "Bwd Seg Size Avg    0.0105\n"
     ]
    },
    {
     "data": {
      "image/png": "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QVNTU6hSpYrg5eUlLFmyRMjIyBAE4e1roEePHoK1tbUgl8sFAwMDoV69esKCBQuEly9fFmkcL1++LAAQ1q9fr1T+7nbXq1atEuzs7AQtLS3B0tJSmDZtWp5biBd13Avqf0FbXOf3M8/vnEePHgk9e/YUDA0NBV1dXcHd3V04d+5cnu1kZ2cL48aNE6pWrSqoqakp/cxevnwpTJw4UbCyshK0tLQEa2trYfLkyUJMTEye171w4YLg5uYm6OrqCgAEKysr8dj7W3TnOnLkiODh4SEoFApBW1tbqFevnrBixQqlLcQLGoOC2s5LXq/vvMoEoeDt5N8/592fxe7du4UGDRoI2tragpmZmTBy5EghLS1NpY34+Hhh4MCBgrm5uaChoSFUqVJF+Prrr4V///1XqV5eW7C/b8GCBYKNjY2goaGh9LP5kPd6Qa/B/F67qampwnfffSfUqlVL0NLSEoyMjARnZ2dh9erVSvWysrKE1atXCy4uLoJCoRB0dHQEa2troUuXLsKuXbuU6nbp0kWQyWTCjRs38u3v+54/fy7o6ekV+BUdycnJwpAhQ4SqVasK2tragp2dnbBw4ULhxIkTKuNb1G3vBeHtVwtMnTpVsLS0FLS0tAQ7Ozth1apVeY7Zp/yeys7OFiwsLISuXbvmeQ59+mSCUMZ3xhJRuWZtbQ1ra2ucOnVK6lBIQrmzlH/++ae4POzUqVPw8vLCxo0bVTYFIMrP/fv3YWNjgxkzZiAoKEjqcD5ZOTk5MDU1Rbt27RAaGip1OPSOnTt3ok+fPvj999/FLx6nzwvvISMiojK3ZMkS3Lx5Ezt37pQ6FCICcPHiRWRkZHzQkk0qfdnZ2ZgxYwYGDhzIZOwzxnvIiIiozNWoUSPf74YjorLn6uqqtEEQ/Teoq6vj5s2bUodBpYwzZERERERERBLhPWREREREREQS4QwZERERERGRRJiQERERERERSYQJGRERERERkUSYkFGZy8rKQkJCArKysqQOhYiIiIhIUkzIqMw9fPgQlpaWePjwodShEBERERFJigkZERERERGRRJiQERERERERSYQJGRERERERkUSYkBEREREREUmECRkREREREZFEmJARERERERFJhAkZERERERGRRJiQERERERERSYQJGRERERERkUSYkBEREREREUmECRkREREREZFEmJARERERERFJhAkZ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ByMxMRG6urqwtbXF+vXr0b9/f7HewIEDcfHiRYwcORLJycno378/Nm3ahA4dOmDt2rWYO3cudu7cCRcXF+zatQsuLi4fHRsRERERUXklEwRBkDoIKl8SEhJgaWmJzv0DoavgvWVS2LpyvtQhEBERERF4DxkREREREZFkmJARERERERFJhAkZERERERGRRJiQERERERERSYQJGRERERERkUS4yyKVudxdFuPj42FhYSF1OEREREREkuEMGRERERERkUSYkBEREREREUmECRkREREREZFEmJARERERERFJhAkZERERERGRRJiQERERERERSURD6gCo/Bo1NRi6CgOpwygXtq6cL3UIRERERJQHzpARERERERFJhAkZERERERGRRJiQERERERERSYQJGRERERERkUSYkBEREREREUmk3CZkQUFBkMlk4sPU1BTe3t44c+aMWGfTpk2QyWRISkrKt51Tp04hODi4yNdUKBQfHXtxLFmyBGpqaoiPj8/z+NWrVyGTybBhw4YyjoyIiIiIqPwqtwkZAMjlckRHRyM6Ohpr1qxBcnIyfHx88Pfffxe5jQ9JyKTUs2dPyGQy7Ny5M8/jO3bsgLa2Nrp27VrGkRERERERlV/lOiFTU1ODq6srXF1d4e/vj59//hlZWVlYu3at1KGVuKpVq8LDwwPbt2/P8/jOnTvRtm1bGBoaFqv97OxsvHnz5mNCJCIiIiIqd8p1Qva+atWqwdTUFLGxsfnW2bhxI7S0tLB+/XoEBQVh5syZSE9PF5c+enp6flQMCQkJ6NOnDypWrAi5XA53d3dcvnxZqY61tTVGjBiBVatWwcrKCoaGhujUqROePHlSYNu9e/fGlStXcOPGDaXy6OhoxMbG4ssvvwQATJo0CXXr1oVCoUDVqlXRq1cvJCYmKp3j6emJdu3aITQ0FHZ2dtDW1saff/75UX0nIiIiIipvNKQO4L8kLS0NycnJqFKlSp7HV6xYgfHjx2Pz5s3o2bMnEhISkJCQgO3btyMiIgIAYGBgUOzrp6SkoFmzZlAoFFixYgUMDQ2xYsUKeHt74/bt26hUqZJY9+DBg7h9+zZWrVqFpKQkfPPNNxg5cmS+SxIBwN/fH8OHD8f27dsxa9YssXz79u0wNDRE27ZtAQCPHz/Gd999hypVquDJkydYsmQJPDw8cP36dWho/P9L5rfffsP9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RERE5ZVMEARB6iCofElISIClpSU69w+EroL3ln2orSvnSx0CEREREZUQye4hIyIiIiIiKu+YkBEREREREUmECRkREREREZFEmJARERERERFJhAkZERERERGRRJiQERERERERSYTb3lOZy932Pj4+HhYWFlKHQ0REREQkGc6QERERERERSYQJGRERERERkUSYkBEREREREUmECRkREREREZFEmJARERERERFJREPqAKj8GjU1GLoKA6nDkMTWlfOlDoGIiIiI/gM4Q0ZERERERCQRJmREREREREQSYUJGREREREQkESZkREREREREEmFCRkREREREJBEmZERERERERBIpk4QsKCgIMplM5eHg4FDi12rQoAECAgIKrBMQEKAUh7m5Odq3b4+rV68qxaxQKApsJzw8HKtXry5SXAEBAaXS3w9x9OhReHh4oGLFitDT00ONGjXQp08f3Lp1S6yzadMmbN++vUjtXblyBTKZDKdOnSqliImIiIiIPm9l9j1kcrkcERERSmW6urpldXkV1atXx7Zt2yAIAu7cuYPp06fDw8MD169fR+XKlYvURnh4OH777TcMGzaslKP9eLt27ULPnj3Rv39/fPvtt9DS0kJMTAx2796NmJgY1KpVC8DbhEyhUKB3794SR0xERERE9Pkrs4RMTU0Nrq6uZXW5QsnlcjGeJk2awNraGu7u7ti6dSvGjx8vcXQlb8WKFfDy8sKmTZvEMj8/P4waNQo5OTnSBUZEREREVI79J+4hmz17NqpVqyY+z8nJgZGRESpVqqRUz9zcHIsWLRKfnzt3Do0aNYKOjg4cHBxw9OjRYsfQuHFjAEBsbGy+dWbNmgVdXV0cOXIEAQEBCA0NxbVr18Slj4UtlSxMTEwMOnbsCENDQ+jp6aFt27a4e/euUh2ZTIaFCxciKCgIZmZmqFixIgYMGID09PQC205JSYG5uXmex9TU3r4MPD09cfr0aRw+fFjsU1BQkFhvzpw5qFy5MhQKBbp06YLHjx9/VH+JiIiIiMq7MpshA4CsrCyl5+rq6pDJZHB3d8f06dMRGxsLGxsbXLlyBS9fvsTz588RExMDe3t73Lp1Cw8fPoS7uzsA4OHDh2jZsiXq1q2L3bt3IyUlBYGBgUhPT0eDBg0+OLbcRKxKlSp5Hp8wYQLWrl2LI0eOwNPTE3Z2dnjy5Alu3LiBbdu2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OTklHuCzZ88gk8mwadOmAuslJyfjm2++Qc2aNaGjo4NKlSqhWbNmCAkJKfGYChIfH4+vvvoKNjY20NHRgbm5OXx9fbF161axzqZNmyCTyZCUlFRmcb158wYVK1aEmpoa/vnnnzK7LhERERER5a9Y297L5XJEREQAADIyMhAZGYlJkyYhJycHkyZNKtEAiyIrKwve3t549uwZJk+ejNq1a+Phw4f43//+h59//hljxowpkziePXsGV1dXGBsbIygoCFZWVkhISEBERASOHTuGPn36AADatm2L6OhoGBkZlUlcAPDLL78gOTkZALBjxw5MnDixzK5NRERERER5K1ZCpqamBldXV/G5l5cXrl69in379kmSkJ06dQp//fUXTp8+DXd3d7G8Z8+epTJrl5+wsDD8+++/iI6ORrVq1cTyPn36KMVhamoKU1PTMosLALZv3w4jIyPY2tpi27ZtTMiIiIiIiP4DSuweMn19fbx580Z87uPjg759+4rPL1++DJlMhm7duollN2/ehEwmw6VLl8Syn376CdbW1tDV1YWPjw/u3LlT6LVTUlIAAObm5irH1NSUu/js2TMMGzYM5ubm0NbWRqNGjXD8+HGlOoIgYNasWahcuTIUCgW6deuGEydOQCaT4dSpUwXGoaamhkqVKhUYx/tLFgMCApSWgeY+rK2txXNevXqF7777DlZWVtDW1oa9vT22b99e6NgAQHp6Og4ePAh/f38EBATg6tWruHr1qnhMT08PixcvVjnP398fTZo0EZ9fu3YN7u7u0NHRQc2aNbFt2zZ06tQJnp6eRYqDiIiIiIiUFTshy8rKQlZWFp4/f46DBw9i79698Pf3F4+7u7sjKipKfH769Gno6OjgzJkzSmUKhQINGzYEABw6dAiDBw+Gl5cX9u/fDx8fH6UELj8NGjSAmpoaBg0ahIiICLx69SrPeq9fv4afnx8OHTqEuXPn4uDBg6hTpw7atm0rJigAsGLFCgQFBSEgIAD79u2Dra0tBg0aVGgcjRo1Qk5ODr788ktER0cjKyur0HMAYNq0aYiOjhYfx48fh4mJCezs7MQ63bt3xw8//IBx48bh0KFDaNWqFfr06YOjR48W2n54eDjS09PRu3dvdO/eHRoaGmIyp6enhw4dOmDnzp1K5zx//hyHDx9G7969AbxdmtqiRQskJydj69atmDdvHubP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GRni91NpaGjA0tISffr0wYwZM5R2X9TX14ejoyN+//13pWTEw8MDMTExSskbAHTo0AFr167F3LlzsXPnTri4uGDXrl1wcXEpMB4XFxf4+/sjPDwcy5YtQ2ZmJiwtLfHll19i0qRJ4nI5bW1tREREICgoCHPnzkViYiIqVqwIR0dHDBs2TGxv5MiRSElJwerVq/H999/D19cXixYtQo8ePZRmjd7Xpk0bxMXFITQ0FLNnz0ZOTg6qVauG8ePHY+zYseJuku+7efMm0tPT0b59e6VyKysr3L9/H8DbmcL58+dj9erViIuLg6GhIRwcHDBgwIB849m+fTuaNm2qkowBb39uvXv3xo8//ogXL15AoVCgV69e+P7776FQKNCuXTul+nK5HMePH8fQoUPx5ZdfomrVqpg2bRo2b95c4JgQEREREVH+ZEJea+xIxbRp07BkyRIkJydDLpdLHc5/wtOnT1G9enV88803mDFjRpHPS0hIgKWlJTr3D4Su4r9/b9nWlfOlDoGIiIiIPlMltqnH5yQmJgZbt26Fm5sbtLS0cOrUKSxevBiBgYHlOhlbsGABzMzMYG1tjcTERCxevBjZ2dn46quvpA6NiIiIiOiTxIQsD7q6uoiOjsaaNWvw/PlzVK1aFRMmTEBQUJDUoUlKTU0Nc+bMwYMHD6ChoQEXFxdERETA0tJS6tCIiIiIiD5JXLJIZY5LFomIiIiI3uL2eERERERERBJhQkZERERERCQRJmREREREREQS4T1kVOZy7yGLj4+HhYWF1OEQEREREUmGM2REREREREQSYUJGREREREQkESZkREREREREEmFCRkREREREJBEmZERERERERBJhQkZERERERCQRJmREREREREQSYUJGREREREQkESZkREREREREEmFCRkREREREJBEmZERERERERBJhQkZERERERCQRJmREREREREQS0ZA6ACp/srKyAACJiYkSR0JEREREVHoqV64MDY2CUy4mZFTmYmNjAQDOzs4SR0JEREREVHri4+NhYWFRYB0mZFTmLC0tAQDnzp0T/58+XGJiIpydnXHx4kWYm5tLHc4ni+NYMjiOJYPjWDI4jiWD41gyOI4l41Mdx8qVKxdahwkZlTkdHR0AbxOzwv5iQIUzNzfnOJYAjmPJ4DiWDI5jyeA4lgyOY8ngOJaMz3EcuakHERERERGR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",
      "text/plain": [
       "<Figure size 880x440 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "rng = np.random.RandomState(SEED)\n",
    "idx = rng.choice(len(X_val), size=min(8000, len(X_val)), replace=False)\n",
    "macro_f1_at_threshold = lambda est, Xs, ys: f1_score(ys, (est.predict_proba(Xs)[:, 1] >= THRESHOLD).astype(int), average=\"macro\")\n",
    "pi = permutation_importance(best_model, X_val.iloc[idx], y_val[idx], scoring=macro_f1_at_threshold,\n",
    "                            n_repeats=3, random_state=SEED, n_jobs=1)\n",
    "imp = pd.Series(pi.importances_mean, index=features).sort_values(ascending=False).head(10)\n",
    "print(imp.round(4).to_string())\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(8, 4))\n",
    "ax.barh(imp.index[::-1], imp.values[::-1], color=\"#5b6b77\")\n",
    "ax.set_xlabel(\"Drop in Macro F1 when the feature is shuffled\")\n",
    "ax.set_title(\"Top 10 features (permutation importance, validation)\")\n",
    "plt.tight_layout()\n",
    "plt.savefig(FIG_DIR / \"iot-permutation-importance.png\", dpi=110)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b4a46e9a",
   "metadata": {},
   "source": [
    "## 12. Deployment artifact\n",
    "\n",
    "A frequent failure in deployed machine learning is **train/serve skew**: the application prepares the data differently from the notebook, and the model silently returns wrong answers. To rule it out by design, everything needed to score a flow travels in **one file**: the fitted model, the exact ordered feature list, the decision threshold and the library version. The application loads that file and selects columns **by name**, so a reordered or incomplete CSV is rejected instead of being mis-scored.\n",
    "\n",
    "Gradient boosting does not need scaling, so there is no separate preprocessing object to forget."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "a22bb303",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-19T11:04:05.857832Z",
     "iopub.status.busy": "2026-10-19T11:04:05.857007Z",
     "iopub.status.idle": "2026-10-19T11:04:05.999001Z",
     "shell.execute_reply": "2026-10-19T11:04:05.998124Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Demo file: (44, 65) labels kept: True\n",
      "Saved: ['demo_flows.csv', 'feature_schema.json', 'threat_detector.joblib']\n",
      "Model file size: 1.5 MB\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "1893"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "artifact = {\n",
    "    \"model\": best_model,\n",
    "    \"features\": features,\n",
    "    \"threshold\": THRESHOLD,\n",
    "    \"positive_label\": \"Attack\",\n",
    "    \"negative_label\": \"Benign\",\n",
    "    \"trained_on\": \"CSE-CIC-IDS2018 course sample, de-duplicated, 70% training split\",\n",
    "    \"sklearn_version\": sklearn.__version__,\n",
    "    \"test_scores\": {k: round(v, 4) for k, v in test_scores.items()},\n",
    "}\n",
    "joblib.dump(artifact, ART_DIR / \"threat_detector.joblib\", compress=3)\n",
    "(ART_DIR / \"feature_schema.json\").write_text(json.dumps({\"features\": features, \"threshold\": THRESHOLD}, indent=1))\n",
    "\n",
    "# A small demo file of real test flows (with their true label, which the app uses for comparison).\n",
    "demo = X_test.copy()\n",
    "demo[\"Label\"] = fam_test\n",
    "demo_sample = pd.concat([g.sample(min(len(g), 4), random_state=SEED) for _, g in demo.groupby(\"Label\")])\n",
    "demo_sample.sample(frac=1, random_state=SEED).to_csv(ART_DIR / \"demo_flows.csv\", index=False)\n",
    "\n",
    "print(\"Demo file:\", demo_sample.shape, \"labels kept:\", \"Label\" in demo_sample.columns)\n",
    "print(\"Saved:\", sorted(p.name for p in ART_DIR.iterdir()))\n",
    "print(f\"Model file size: {(ART_DIR / 'threat_detector.joblib').stat().st_size / 1e6:.1f} MB\")\n",
    "\n",
    "summary = {\"audit\": audit, \"split\": [len(X_train), len(X_val), len(X_test)],\n",
    "           \"validation\": val_table.round(4).to_dict(orient=\"index\"),\n",
    "           \"selected_params\": best_params, \"threshold\": THRESHOLD,\n",
    "           \"test\": {k: round(v, 4) for k, v in test_scores.items()}, \"test_confusion\": cm.tolist(),\n",
    "           \"test_by_family\": by_family[\"correctly classified\"].round(4).to_dict(),\n",
    "           \"diagnostics\": diag.round(4).to_dict(orient=\"index\")}\n",
    "(ART_DIR / \"results_summary.json\").write_text(json.dumps(summary, indent=1, default=str))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2e41a9a8",
   "metadata": {},
   "source": [
    "### Check: the saved artifact scores exactly like the evaluated model\n",
    "\n",
    "I reload the file from disk, as the application does, shuffle the column order of the test set, and compare the predictions with the ones evaluated above."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "1ae3681d",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-19T11:04:06.000440Z",
     "iopub.status.busy": "2026-10-19T11:04:06.000286Z",
     "iopub.status.idle": "2026-10-19T11:04:06.396576Z",
     "shell.execute_reply": "2026-10-19T11:04:06.395762Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Max probability difference: 0.0\n",
      "Identical verdicts on the test set: True (26,514 flows)\n"
     ]
    }
   ],
   "source": [
    "served = joblib.load(ART_DIR / \"threat_detector.joblib\")\n",
    "shuffled = X_test[X_test.columns[::-1]]                       # columns in a different order\n",
    "p_served = served[\"model\"].predict_proba(shuffled[served[\"features\"]])[:, 1]\n",
    "pred_served = (p_served >= served[\"threshold\"]).astype(int)\n",
    "\n",
    "print(\"Max probability difference:\", float(np.abs(p_served - p_test).max()))\n",
    "print(\"Identical verdicts on the test set:\", bool((pred_served == pred_test).all()), f\"({len(pred_served):,} flows)\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "19cc54fc",
   "metadata": {},
   "source": [
    "## 13. Conclusions\n",
    "\n",
    "- On de-duplicated data, with model and threshold chosen on validation and a single test run, **gradient boosting** is the best of the three families.\n",
    "- Almost every error is a confusion between **Benign and Infiltration**. Those two classes share the same ports and similar flow statistics, and the dataset's labelling of Infiltration has been criticised in the literature. The other attack families are detected almost perfectly, but several contain very few distinct flows.\n",
    "- Performance holds without the destination port, so the model is not just a port lookup table.\n",
    "- The deployment artifact bundles model, feature order and threshold; reloaded from disk it reproduces the test verdicts exactly, so the demo application cannot score a flow with the wrong preprocessing.\n",
    "\n",
    "**Limits.** This is a class-balanced sample of one public lab dataset, not live traffic. The attack share (about 70%) is far from reality, so precision and alert volume in production would differ. Labels for Infiltration are questionable. Flow statistics only exist once a flow is finished, so this is not a packet-level real-time detector. The dataset is general enterprise-style traffic, not IoT device traffic, even though the course framed the project around IoT security.\n",
    "\n",
    "**Next steps** would be: evaluate on a different day or a different dataset (generalisation, not just a random split), calibrate the threshold on a realistic benign/attack ratio, and monitor drift once deployed."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.3"
  },
  "project": {
   "school": "ESAIP Engineering School, France",
   "program": "MSc Cybersecurity & Data Science",
   "program_period": "2024-2026",
   "project_type": "Academic team project",
   "course": "Technical Project",
   "project_year": "2024"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}