Merge remote-tracking branch 'origin/decision-tree-nudge-boundaries'

This commit is contained in:
alu committed 2025-06-12 19:52:02 +00:00
commit 50075b1acc
5 files changed
+141 -65

No files matched your search

+3 -2
View File
@@ -1,5 +1,6 @@
data.*
__pycache__
*.json
data/*
data/*
.DS_Store
.ipynb_checkpoints/
+127 -52
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: 7681108\n",
"train accuracy: 0.8410252791654538\n",
"test accuracy: 0.8410252791654538\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": 54,
"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": 55,
"execution_count": 9,
"id": "7f36344d",
"metadata": {},
"outputs": [],
@@ -163,13 +275,13 @@
},
{
"cell_type": "code",
"execution_count": 56,
"execution_count": 10,
"id": "cf8832b9",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAHlkAAB4nCAYAAACvQuxAAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3UERACAMwDDAv+dxmKCfxEAldM/MLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgM/O7yAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMBjsgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRMlgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgITJMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkDBZBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEibLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwmQZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABImCwDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJk2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBhsgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRMlgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgITJMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkDBZBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEibLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwmQZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABImCwDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJk2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBhsgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRMlgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgITJMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkDBZBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEibLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwmQZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABImCwDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJk2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBhsgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRMlgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgITJMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkDBZBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEibLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwmQZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABImCwDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJk2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBhsgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRMlgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgITJMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkDBZBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEibLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwmQZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABImCwDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJk2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBhsgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRMlgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgITJMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkDBZBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEibLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwmQZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABImCwDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJk2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBhsgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRMlgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgITJMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkDBZBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEibLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwmQZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABImCwDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJk2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBhsgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRMlgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgITJMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkDBZBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEibLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwmQZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABImCwDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJk2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBhsgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRMlgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgITJMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkDBZBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEibLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwmQZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABImCwDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJk2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBhsgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRMlgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgITJMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkDBZBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEibLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwmQZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABImCwDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJk2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBhsgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRMlgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgITJMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkDBZBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEibLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwmQZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABImCwDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJk2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBhsgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRMlgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgITJMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkDBZBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEibLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwmQZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABImCwDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJk2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBhsgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRMlgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgITJMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkDBZBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEibLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwmQZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABImCwDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJk2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBhsgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRMlgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgITJMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkDBZBgAAAAAAAAAAAAAAAAAAAAAAAAALine truncated
"image/png": "iVBORw0KGgoAAAANSUhEUgAAHlkAAB4nCAYAAACvQuxAAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3UERACAMwDDAv+dxmKCfxEAldM/MLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgM/O7yAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMBjsgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRMlgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgITJMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkDBZBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEibLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwmQZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABImCwDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJk2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBhsgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRMlgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgITJMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkDBZBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEibLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwmQZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABImCwDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJk2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBhsgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRMlgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgITJMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkDBZBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEibLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwmQZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABImCwDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJk2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBhsgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRMlgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgITJMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkDBZBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEibLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwmQZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABImCwDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJk2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBhsgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRMlgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgITJMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkDBZBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEibLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwmQZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABImCwDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJk2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBhsgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRMlgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgITJMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkDBZBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEibLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwmQZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABImCwDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJk2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBhsgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRMlgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgITJMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkDBZBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEibLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwmQZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABImCwDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJk2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBhsgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRMlgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgITJMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkDBZBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEibLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwmQZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABImCwDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJk2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBhsgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRMlgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgITJMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkDBZBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEibLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwmQZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABImCwDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJk2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBhsgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRMlgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgITJMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkDBZBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEibLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwmQZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABImCwDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJk2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBhsgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRMlgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgITJMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkDBZBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEibLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwmQZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABImCwDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJk2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBhsgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRMlgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgITJMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkDBZBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEibLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwmQZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABImCwDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJk2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBhsgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRMlgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgITJMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkDBZBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEibLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwmQZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABImCwDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJk2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBhsgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRMlgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgITJMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkDBZBgAAAAAAAAAAAAAAAAAAAAAAAAALine truncated
"text/plain": [
"<Figure size 10000x10000 with 1 Axes>"
]
@@ -185,53 +297,16 @@
},
{
"cell_type": "code",
"execution_count": 57,
"id": "ca96c092",
"execution_count": null,
"id": "ad2a735b-517f-49c6-80cb-a431f2788133",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.8410252791654538\n"
]
}
],
"source": [
"correct = 0\n",
"for i in range(len(Y)):\n",
" prediction = Predict_Y[i]\n",
" if prediction != None and Y[i] == prediction:\n",
" correct += 1\n",
"\n",
"print(correct / len(Y))"
]
},
{
"cell_type": "code",
"execution_count": 58,
"id": "0dfc63cd",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array(['other'], dtype='<U23')"
]
},
"execution_count": 58,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dt.predict([[6, 40234, 5228]])"
]
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "switch",
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
+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
@@ -247,7 +247,7 @@
],
"metadata": {
"kernelspec": {
"display_name": "cs216",
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
@@ -261,7 +261,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.13.3"
"version": "3.12.9"
}
},
"nbformat": 4,
+7 -7
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"
},