First try boundary nudging

This commit is contained in:
Nathan Huey committed 2025-06-11 16:55:23 -07:00
1 parent afc882a569
commit fda251f051
5 files changed
+146 -24

No files matched your search

+3 -1
View File
@@ -1,3 +1,5 @@
data.*
__pycache__
*.json
*.json
.DS_Store
.ipynb_checkpoints/
+131 -11
View File
@@ -17,7 +17,8 @@
"from matplotlib import pyplot as plt\n",
"from labels import mac_to_label\n",
"import json\n",
"import math"
"import math\n",
"import copy"
]
},
{
@@ -30,9 +31,9 @@
"name": "stdout",
"output_type": "stream",
"text": [
"dataset size: 4735360\n",
"train accuracy: 0.879490682862549\n",
"test accuracy: 0.879490682862549\n"
"dataset size: 1894144\n",
"pre-nudge train accuracy: 0.879490682862549\n",
"pre-nudge test accuracy: 0.879490682862549\n"
]
}
],
@@ -64,15 +65,126 @@
"dt = DecisionTreeClassifier(max_depth = 5)\n",
"dt.fit(X, Y)\n",
"Predict_Y = dt.predict(X)\n",
"print(f\"train accuracy: {accuracy_score(Y, Predict_Y)}\")\n",
"print(f\"pre-nudge train accuracy: {accuracy_score(Y, Predict_Y)}\")\n",
"\n",
"Predict_Yt = dt.predict(Xt)\n",
"print(f\"test accuracy: {accuracy_score(Yt, Predict_Yt)}\")"
"print(f\"pre-nudge test accuracy: {accuracy_score(Yt, Predict_Yt)}\")"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "17d2b9de-3e0d-4c52-a3da-aeab436898b4",
"metadata": {},
"outputs": [],
"source": [
"def nudge_threshold_power_2(threshold: float):\n",
" threshold = math.floor(threshold)\n",
" bit_len = threshold.bit_length()\n",
" if threshold <= 2:\n",
" nudged_value = threshold\n",
" elif threshold & (1 << (bit_len - 2)):\n",
" nudged_value = 1 << (bit_len)\n",
" else:\n",
" nudged_value = 1 << (bit_len - 1)\n",
" return nudged_value"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "fe251c3a-629d-4db7-b0aa-06bd085e8d60",
"metadata": {},
"outputs": [],
"source": [
"def nudge_threshold_n_significant_bits(threshold: float, n_sig_bits: int):\n",
" threshold = math.floor(threshold)\n",
" \n",
" bit_len = threshold.bit_length()\n",
" if bit_len - 1 <= n_sig_bits:\n",
" nudged_value = threshold\n",
" else:\n",
" mask = ((1 << n_sig_bits) - 1) << (threshold.bit_length() - n_sig_bits)\n",
" nudged_value = threshold & mask\n",
" if threshold & (1 << (bit_len - 1 - n_sig_bits)):\n",
" nudged_value += (1 << (bit_len - n_sig_bits))\n",
" \n",
" return nudged_value"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "83fe5426-60a0-4231-bbd6-08970ca2af8e",
"metadata": {},
"outputs": [],
"source": [
"def nudge_threshold_max_n_bits(threshold: float, n_bits: int):\n",
" threshold = math.floor(threshold)\n",
" if n_bits == 0:\n",
" return threshold\n",
" \n",
" mask = pow(2, 32) - 1 ^ ((1 << n_bits) - 1)\n",
" nudged_value = threshold & mask\n",
" if threshold & (1 << (n_bits - 1)):\n",
" nudged_value += (1 << (n_bits))\n",
" \n",
" return nudged_value"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "d2dba2fe-1822-48f0-b0af-9dbed09a31a5",
"metadata": {},
"outputs": [],
"source": [
"def crawl_tree(tree: _tree, node):\n",
" # postfix traversal on non-leaf nodes\n",
" flag = 0\n",
" if tree.children_left[node] != -1:\n",
" crawl_tree(tree, tree.children_left[node])\n",
" flag |= 1\n",
" if tree.children_right[node] != -1:\n",
" crawl_tree(tree, tree.children_right[node])\n",
" flag |= 1\n",
"\n",
" if flag:\n",
" # can choose `nudge_threshold_power_2`, `nudge_threshold_n_significant_bits`, or `nudge_threshold_max_n_bits`\n",
" tree.threshold[node] = nudge_threshold_max_n_bits(tree.threshold[node], 2)\n",
"\n",
"original_tree = dt.tree_\n",
"nudged_tree = copy.deepcopy(original_tree)\n",
"crawl_tree(nudged_tree, 0)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "5230f85b-6908-46a9-922e-f9815e633931",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"post-nudge train accuracy: 0.8767189822949047\n",
"post-nudge test accuracy: 0.8767189822949047\n"
]
}
],
"source": [
"dt.tree_ = nudged_tree\n",
"Predict_Y = dt.predict(X)\n",
"print(f\"post-nudge train accuracy: {accuracy_score(Y, Predict_Y)}\")\n",
"\n",
"Predict_Yt = dt.predict(Xt)\n",
"print(f\"post-nudge test accuracy: {accuracy_score(Yt, Predict_Yt)}\")"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "d336971a",
"metadata": {},
"outputs": [],
@@ -141,7 +253,7 @@
},
{
"cell_type": "code",
"execution_count": 4,
"execution_count": 9,
"id": "7f36344d",
"metadata": {},
"outputs": [],
@@ -163,13 +275,13 @@
},
{
"cell_type": "code",
"execution_count": 5,
"execution_count": 10,
"id": "cf8832b9",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAHlkAAB4nCAYAAACvQuxAAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3UEBACAQgDC1f+ezhTzcEtCAPTOzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHjt1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8CeTZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIGGyDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJEyWAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAhMkyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQMFkGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASJssAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDCZBkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEiYLAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmTZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIGGyDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJEyWAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAhMkyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQMFkGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASJssAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDCZBkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEiYLAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmTZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIGGyDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJEyWAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAhMkyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQMFkGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASJssAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDCZBkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEiYLAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmTZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIGGyDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJEyWAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAhMkyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQMFkGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASJssAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDCZBkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEiYLAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmTZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIGGyDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJEyWAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAhMkyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQMFkGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASJssAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDCZBkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEiYLAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmTZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIGGyDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJEyWAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAhMkyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQMFkGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASJssAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDCZBkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEiYLAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmTZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIGGyDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJEyWAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAhMkyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQMFkGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASJssAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDCZBkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEiYLAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmTZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIGGyDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJEyWAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAhMkyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQMFkGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASJssAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDCZBkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEiYLAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmTZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIGGyDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJEyWAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAhMkyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQMFkGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASJssAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDCZBkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEiYLAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmTZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIGGyDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJEyWAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAhMkyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQMFkGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASJssAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDCZBkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEiYLAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmTZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIGGyDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJEyWAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAhMkyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQMFkGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASJssAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDCZBkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEiYLAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmTZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIGGyDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJEyWAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAhMkyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQMFkGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASJssAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDCZBkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEiYLAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmTZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIGGyDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJEyWAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAhMkyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQMFkGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASJssAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDCZBkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEiYLAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmTZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIGGyDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJEyWAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAhMkyAAAAAAAAAAAAAAAAAAAAAAAAAAALine truncated
"image/png": "iVBORw0KGgoAAAANSUhEUgAAHlkAAB4nCAYAAACvQuxAAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3UERACAMwDDAv+dxmKCfxEAldM/MLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgM/O7yAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMBjsgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRMlgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgITJMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkDBZBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEibLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwmQZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABImCwDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJk2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBhsgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRMlgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgITJMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkDBZBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEibLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwmQZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABImCwDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJk2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBhsgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRMlgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgITJMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkDBZBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEibLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwmQZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABImCwDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJk2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBhsgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRMlgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgITJMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkDBZBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEibLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwmQZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABImCwDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJk2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBhsgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRMlgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgITJMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkDBZBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEibLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwmQZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABImCwDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJk2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBhsgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRMlgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgITJMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkDBZBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEibLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwmQZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABImCwDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJk2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBhsgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRMlgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgITJMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkDBZBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEibLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwmQZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABImCwDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJk2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBhsgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRMlgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgITJMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkDBZBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEibLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwmQZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABImCwDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJk2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBhsgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRMlgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgITJMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkDBZBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEibLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwmQZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABImCwDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJk2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBhsgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRMlgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgITJMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkDBZBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEibLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwmQZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABImCwDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJk2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBhsgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRMlgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgITJMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkDBZBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEibLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwmQZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABImCwDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJk2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBhsgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRMlgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgITJMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkDBZBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEibLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwmQZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABImCwDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJk2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBhsgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRMlgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgITJMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkDBZBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEibLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwmQZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABImCwDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJk2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBhsgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRMlgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgITJMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkDBZBgAAAAAAAAAAAAAAAAAAAAAAAAALine truncated
"text/plain": [
"<Figure size 10000x10000 with 1 Axes>"
]
@@ -182,11 +294,19 @@
"fig = plt.figure(figsize=(100,100))\n",
"_ = plot_tree(dt, filled=True)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "ad2a735b-517f-49c6-80cb-a431f2788133",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "switch",
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
@@ -200,7 +320,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.7"
"version": "3.12.9"
}
},
"nbformat": 4,
+2 -2
View File
@@ -89,7 +89,7 @@
],
"metadata": {
"kernelspec": {
"display_name": "switch",
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
@@ -103,7 +103,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.7"
"version": "3.12.9"
}
},
"nbformat": 4,
+2 -2
View File
@@ -241,7 +241,7 @@
],
"metadata": {
"kernelspec": {
"display_name": "switch",
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
@@ -255,7 +255,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.7"
"version": "3.12.9"
}
},
"nbformat": 4,
+8 -8
View File
@@ -117,8 +117,8 @@
"[1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n",
"id mapping: \n",
"[['dst_range', 'dst_meta'], ['src_range', 'src_meta'], ['protocl_range', 'protocl_meta'], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], []]\n",
"TCAM bits: 13312\n",
"RAM bits: 522\n"
"TCAM bits: 13184\n",
"RAM bits: 504\n"
]
}
],
@@ -263,8 +263,8 @@
"[1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n",
"id mapping: \n",
"[['dst_range', 'dst_meta'], ['src_range', 'src_meta'], ['protocl_range', 'protocl_meta'], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], []]\n",
"TCAM bits: 3520\n",
"RAM bits: 522\n"
"TCAM bits: 3320\n",
"RAM bits: 504\n"
]
}
],
@@ -368,8 +368,8 @@
"[1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n",
"id mapping: \n",
"[['dst_range', 'dst_meta'], ['src_range', 'src_meta'], ['protocl_range', 'protocl_meta'], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], []]\n",
"TCAM bits: 2120\n",
"RAM bits: 522\n"
"TCAM bits: 2152\n",
"RAM bits: 504\n"
]
}
],
@@ -382,7 +382,7 @@
],
"metadata": {
"kernelspec": {
"display_name": "switch",
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
@@ -396,7 +396,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.7"
"version": "3.12.9"
}
},
"nbformat": 4,