From 3e0e3620a653162eccf2366a9c1d3d3f9bda863f Mon Sep 17 00:00:00 2001 From: johannes bilk <johannes.bilk-2@exp2.physik.uni-giessen.de> Date: Thu, 7 Mar 2024 12:16:15 +0100 Subject: [PATCH] clean up --- forrest-test.ipynb | 766 ++-- forrest-test.json | 6317 ++++++++++++++------------- machineLearning/rf/leafFunction.py | 2 + som-test.json | 6416 ++++++++++++++-------------- som/__init__.py | 4 - som/error.py | 51 - som/neighborhood.py | 101 - som/som.py | 302 -- som/topology.py | 363 -- tree-test.ipynb | 2 +- tree-test.json | 1310 +++--- 11 files changed, 7637 insertions(+), 7997 deletions(-) delete mode 100644 som/__init__.py delete mode 100644 som/error.py delete mode 100644 som/neighborhood.py delete mode 100644 som/som.py delete mode 100644 som/topology.py diff --git a/forrest-test.ipynb b/forrest-test.ipynb index 78285ca..598013e 100644 --- a/forrest-test.ipynb +++ b/forrest-test.ipynb @@ -149,134 +149,170 @@ "name": "stdout", "output_type": "stream", "text": [ - "tree 1 |⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿| done ✔ | 13%\n", - "tree 2 |⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿| done ✔ | 12%\n", + "tree 1 |⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿| done ✔ | 18%\n", + "tree 2 |⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿| done ✔ | 21%\n", "tree 3 |⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿| done ✔ | 16%\n", - "tree 4 |⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿| done ✔ | 17%\n", + "tree 4 |⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿| done ✔ | 16%\n", "tree 5 |⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿| done ✔ | 17%\n", "â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â” forrest â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\n", "voting: Majority, booster: None, bootstrapping: True\n", "\n", "—————————————————————— tree: 1/5 ———————————————————————\n", - "split: CART, impurity: Entropy, leaf: Mode, nodes: 35\n", + "split: CART, impurity: Entropy, leaf: Mode, nodes: 47\n", "maxDepth: 7, reached depth: 7, minSamplesSplit: 2\n", "························································\n", - "â•´feat: 2 <= 2.14, samples: 9600\n", - " ├─feat: 3 <= 2.15, samples: 4747\n", - " │ └─╴value: 0.0\n", - " │ └─╴feat: 2 <= 1.65, samples: 104\n", - " │ └─╴value: 0.0\n", - " │ └─╴feat: 0 <= -1.22, samples: 8\n", - " │ └─╴value: 0.0\n", - " │ └─╴value: 1.0\n", - " └─╴feat: 2 <= 3.24, samples: 4853\n", - " ├─feat: 3 <= 0.71, samples: 267\n", - " │ ├─feat: 0 <= 1.74, samples: 56\n", - " │ │ ├─feat: 4 <= 0.15, samples: 53\n", + "â•´feat: 0 <= 2.65, samples: 9600\n", + " ├─feat: 0 <= 2.09, samples: 4855\n", + " │ ├─feat: 0 <= 1.38, samples: 4748\n", + " │ │ └─╴value: 0.0\n", + " │ │ └─╴feat: 1 <= 1.59, samples: 312\n", + " │ │ ├─feat: 3 <= 2.41, samples: 295\n", + " │ │ │ └─╴value: 0.0\n", + " │ │ │ └─╴feat: 0 <= 1.41, samples: 4\n", + " │ │ │ └─╴value: 1.0\n", + " │ │ │ └─╴value: 0.0\n", + " │ │ └─╴feat: 3 <= 0.60, samples: 17\n", + " │ │ ├─feat: 1 <= 1.76, samples: 10\n", + " │ │ │ └─╴value: 0.0\n", + " │ │ │ └─╴value: 0.0\n", + " │ │ └─╴value: 1.0\n", + " │ └─╴feat: 1 <= 1.22, samples: 107\n", + " │ ├─feat: 2 <= -1.25, samples: 58\n", + " │ │ └─╴value: 1.0\n", + " │ │ └─╴value: 0.0\n", + " │ └─╴feat: 1 <= 1.93, samples: 49\n", + " │ ├─feat: 2 <= 0.91, samples: 14\n", + " │ │ ├─feat: 0 <= 2.56, samples: 9\n", + " │ │ │ └─╴value: 0.0\n", + " │ │ │ └─╴value: 1.0\n", + " │ │ └─╴value: 1.0\n", + " │ └─╴feat: 3 <= -0.38, samples: 35\n", + " │ └─╴value: 0.0\n", + " │ └─╴value: 1.0\n", + " └─╴feat: 0 <= 3.03, samples: 4745\n", + " ├─feat: 1 <= 0.99, samples: 108\n", + " │ ├─feat: 4 <= 0.30, samples: 23\n", + " │ │ ├─feat: 2 <= 1.14, samples: 19\n", " │ │ │ └─╴value: 0.0\n", - " │ │ │ └─╴feat: 0 <= 0.75, samples: 17\n", - " │ │ │ └─╴value: 0.0\n", + " │ │ │ └─╴feat: 0 <= 2.77, samples: 2\n", " │ │ │ └─╴value: 1.0\n", + " │ │ │ └─╴value: 0.0\n", " │ │ └─╴value: 1.0\n", - " │ └─╴feat: 3 <= 1.96, samples: 211\n", - " │ ├─feat: 2 <= 2.30, samples: 64\n", - " │ │ └─╴value: 0.0\n", - " │ │ └─╴feat: 1 <= 0.02, samples: 55\n", - " │ │ └─╴value: 1.0\n", - " │ │ └─╴value: 1.0\n", - " │ └─╴feat: 2 <= 2.34, samples: 147\n", - " │ ├─feat: 2 <= 2.34, samples: 20\n", - " │ │ └─╴value: 1.0\n", - " │ │ └─╴value: 0.0\n", - " │ └─╴value: 1.0\n", - " └─╴feat: 3 <= 0.22, samples: 4586\n", - " ├─feat: 2 <= 3.59, samples: 51\n", - " │ ├─feat: 3 <= -0.28, samples: 3\n", - " │ │ └─╴value: 1.0\n", + " │ └─╴value: 1.0\n", + " └─╴feat: 1 <= 1.22, samples: 4637\n", + " ├─feat: 0 <= 3.91, samples: 459\n", + " │ ├─feat: 1 <= 1.20, samples: 56\n", + " │ │ ├─feat: 3 <= 0.82, samples: 52\n", + " │ │ │ └─╴value: 1.0\n", + " │ │ │ └─╴value: 1.0\n", " │ │ └─╴value: 0.0\n", " │ └─╴value: 1.0\n", " └─╴value: 1.0\n", "\n", "—————————————————————— tree: 2/5 ———————————————————————\n", - "split: CART, impurity: Entropy, leaf: Mode, nodes: 33\n", + "split: CART, impurity: Entropy, leaf: Mode, nodes: 57\n", "maxDepth: 7, reached depth: 7, minSamplesSplit: 2\n", "························································\n", - "â•´feat: 2 <= 2.28, samples: 9600\n", - " ├─feat: 2 <= 1.88, samples: 4747\n", - " │ └─╴value: 0.0\n", - " │ └─╴feat: 3 <= 2.00, samples: 105\n", - " │ ├─feat: 0 <= 1.86, samples: 87\n", + "â•´feat: 0 <= 2.31, samples: 9600\n", + " ├─feat: 0 <= 1.74, samples: 4747\n", + " │ ├─feat: 3 <= 2.32, samples: 4590\n", + " │ │ └─╴value: 0.0\n", + " │ │ └─╴feat: 0 <= 1.24, samples: 51\n", + " │ │ └─╴value: 0.0\n", + " │ │ └─╴value: 1.0\n", + " │ └─╴feat: 1 <= 1.53, samples: 157\n", + " │ ├─feat: 3 <= 1.86, samples: 134\n", " │ │ └─╴value: 0.0\n", - " │ │ └─╴value: 1.0\n", - " │ └─╴feat: 0 <= -1.24, samples: 18\n", - " │ └─╴value: 0.0\n", + " │ │ └─╴feat: 0 <= 2.04, samples: 2\n", + " │ │ └─╴value: 0.0\n", + " │ │ └─╴value: 1.0\n", + " │ └─╴feat: 3 <= 0.90, samples: 23\n", + " │ ├─feat: 1 <= 1.64, samples: 15\n", + " │ │ ├─feat: 1 <= 1.53, samples: 6\n", + " │ │ │ └─╴value: 0.0\n", + " │ │ │ └─╴value: 1.0\n", + " │ │ └─╴feat: 0 <= 2.16, samples: 9\n", + " │ │ └─╴value: 0.0\n", + " │ │ └─╴value: 1.0\n", " │ └─╴value: 1.0\n", - " └─╴feat: 2 <= 3.35, samples: 4853\n", - " ├─feat: 3 <= 1.41, samples: 320\n", - " │ ├─feat: 0 <= 0.48, samples: 99\n", + " └─╴feat: 0 <= 2.81, samples: 4853\n", + " ├─feat: 1 <= 0.64, samples: 107\n", + " │ ├─feat: 3 <= 1.71, samples: 28\n", " │ │ └─╴value: 0.0\n", - " │ │ └─╴feat: 2 <= 2.99, samples: 61\n", - " │ │ ├─feat: 4 <= 0.87, samples: 40\n", - " │ │ │ └─╴value: 0.0\n", - " │ │ │ └─╴value: 1.0\n", + " │ │ └─╴feat: 0 <= 2.65, samples: 2\n", + " │ │ └─╴value: 0.0\n", " │ │ └─╴value: 1.0\n", - " │ └─╴feat: 2 <= 2.35, samples: 221\n", - " │ ├─feat: 4 <= 0.56, samples: 13\n", - " │ │ └─╴value: 1.0\n", - " │ │ └─╴value: 0.0\n", - " │ └─╴value: 1.0\n", - " └─╴feat: 3 <= 0.57, samples: 4533\n", - " ├─feat: 2 <= 3.65, samples: 150\n", - " │ ├─feat: 3 <= 0.40, samples: 9\n", - " │ │ ├─feat: 0 <= -0.57, samples: 4\n", - " │ │ │ └─╴value: 1.0\n", - " │ │ │ └─╴value: 0.0\n", - " │ │ └─╴value: 1.0\n", + " │ └─╴feat: 3 <= 0.48, samples: 79\n", + " │ ├─feat: 0 <= 2.50, samples: 22\n", + " │ │ ├─feat: 1 <= 1.73, samples: 13\n", + " │ │ │ └─╴value: 0.0\n", + " │ │ │ └─╴value: 0.0\n", + " │ │ └─╴feat: 4 <= -0.92, samples: 9\n", + " │ │ └─╴value: 0.0\n", + " │ │ └─╴value: 1.0\n", + " │ └─╴feat: 2 <= 0.70, samples: 57\n", + " │ └─╴value: 1.0\n", + " │ └─╴feat: 2 <= 0.83, samples: 18\n", + " │ └─╴value: 0.0\n", + " │ └─╴value: 1.0\n", + " └─╴feat: 1 <= 0.42, samples: 4746\n", + " ├─feat: 0 <= 3.53, samples: 105\n", + " │ ├─feat: 3 <= 0.46, samples: 18\n", + " │ │ └─╴value: 0.0\n", + " │ │ └─╴feat: 2 <= 0.99, samples: 11\n", + " │ │ └─╴value: 1.0\n", + " │ │ └─╴value: 0.0\n", " │ └─╴value: 1.0\n", - " └─╴value: 1.0\n", + " └─╴feat: 1 <= 1.24, samples: 4641\n", + " ├─feat: 1 <= 1.20, samples: 408\n", + " │ └─╴value: 1.0\n", + " │ └─╴feat: 0 <= 3.88, samples: 32\n", + " │ └─╴value: 0.0\n", + " │ └─╴value: 1.0\n", + " └─╴value: 1.0\n", "\n", "—————————————————————— tree: 3/5 ———————————————————————\n", "split: CART, impurity: Entropy, leaf: Mode, nodes: 43\n", "maxDepth: 7, reached depth: 7, minSamplesSplit: 2\n", "························································\n", - "â•´feat: 2 <= 2.36, samples: 9600\n", - " ├─feat: 2 <= 1.77, samples: 4747\n", - " │ ├─feat: 2 <= 1.65, samples: 4591\n", + "â•´feat: 0 <= 2.60, samples: 9600\n", + " ├─feat: 0 <= 2.08, samples: 4747\n", + " │ ├─feat: 0 <= 1.41, samples: 4642\n", " │ │ └─╴value: 0.0\n", - " │ │ └─╴feat: 3 <= 3.06, samples: 51\n", + " │ │ └─╴feat: 1 <= 1.40, samples: 305\n", " │ │ └─╴value: 0.0\n", - " │ │ └─╴value: 1.0\n", - " │ └─╴feat: 3 <= 1.01, samples: 156\n", - " │ ├─feat: 2 <= 2.34, samples: 111\n", + " │ │ └─╴feat: 0 <= 1.42, samples: 23\n", + " │ │ └─╴value: 1.0\n", + " │ │ └─╴feat: 1 <= 1.58, samples: 22\n", + " │ │ └─╴value: 0.0\n", + " │ │ └─╴value: 0.0\n", + " │ └─╴feat: 1 <= 1.61, samples: 105\n", + " │ ├─feat: 3 <= 1.41, samples: 62\n", " │ │ └─╴value: 0.0\n", - " │ │ └─╴feat: 0 <= -1.20, samples: 2\n", - " │ │ └─╴value: 0.0\n", - " │ │ └─╴value: 1.0\n", - " │ └─╴feat: 0 <= 0.47, samples: 45\n", - " │ ├─feat: 1 <= -1.38, samples: 16\n", - " │ │ └─╴value: 1.0\n", + " │ │ └─╴value: 1.0\n", + " │ └─╴feat: 3 <= 1.00, samples: 43\n", + " │ ├─feat: 3 <= 0.92, samples: 19\n", + " │ │ ├─feat: 3 <= 0.45, samples: 17\n", + " │ │ │ └─╴value: 1.0\n", + " │ │ │ └─╴value: 1.0\n", " │ │ └─╴value: 0.0\n", - " │ └─╴feat: 3 <= 1.77, samples: 29\n", - " │ ├─feat: 3 <= 1.16, samples: 10\n", - " │ │ └─╴value: 1.0\n", - " │ │ └─╴value: 0.0\n", - " │ └─╴value: 1.0\n", - " └─╴feat: 2 <= 2.87, samples: 4853\n", - " ├─feat: 3 <= 0.93, samples: 107\n", - " │ ├─feat: 0 <= 1.74, samples: 42\n", - " │ │ ├─feat: 2 <= 2.70, samples: 39\n", - " │ │ │ └─╴value: 0.0\n", - " │ │ │ └─╴feat: 0 <= -0.55, samples: 5\n", - " │ │ │ └─╴value: 0.0\n", - " │ │ │ └─╴value: 1.0\n", - " │ │ └─╴value: 1.0\n", - " │ └─╴feat: 0 <= -0.81, samples: 65\n", - " │ └─╴value: 0.0\n", + " │ └─╴value: 1.0\n", + " └─╴feat: 1 <= 0.58, samples: 4853\n", + " ├─feat: 0 <= 3.55, samples: 160\n", + " │ ├─feat: 3 <= 1.50, samples: 27\n", + " │ │ └─╴value: 0.0\n", + " │ │ └─╴feat: 2 <= -0.65, samples: 6\n", + " │ │ └─╴value: 0.0\n", + " │ │ └─╴value: 1.0\n", + " │ └─╴feat: 0 <= 3.88, samples: 133\n", + " │ ├─feat: 2 <= -0.66, samples: 9\n", + " │ │ └─╴value: 0.0\n", + " │ │ └─╴value: 1.0\n", " │ └─╴value: 1.0\n", - " └─╴feat: 3 <= 0.37, samples: 4746\n", - " ├─feat: 2 <= 3.62, samples: 106\n", - " │ ├─feat: 4 <= -0.07, samples: 17\n", - " │ │ ├─feat: 1 <= -0.51, samples: 8\n", + " └─╴feat: 1 <= 1.25, samples: 4693\n", + " ├─feat: 0 <= 3.88, samples: 414\n", + " │ ├─feat: 0 <= 3.87, samples: 61\n", + " │ │ ├─feat: 0 <= 2.73, samples: 58\n", " │ │ │ └─╴value: 0.0\n", " │ │ │ └─╴value: 1.0\n", " │ │ └─╴value: 0.0\n", @@ -284,100 +320,98 @@ " └─╴value: 1.0\n", "\n", "—————————————————————— tree: 4/5 ———————————————————————\n", - "split: CART, impurity: Entropy, leaf: Mode, nodes: 45\n", + "split: CART, impurity: Entropy, leaf: Mode, nodes: 43\n", "maxDepth: 7, reached depth: 7, minSamplesSplit: 2\n", "························································\n", - "â•´feat: 2 <= 2.15, samples: 9600\n", - " ├─feat: 2 <= 2.00, samples: 4747\n", - " │ ├─feat: 3 <= 1.96, samples: 4694\n", + "â•´feat: 0 <= 2.51, samples: 9600\n", + " ├─feat: 0 <= 1.63, samples: 4747\n", + " │ ├─feat: 3 <= 2.37, samples: 4486\n", " │ │ └─╴value: 0.0\n", - " │ │ └─╴feat: 2 <= 1.67, samples: 153\n", + " │ │ └─╴feat: 0 <= 1.21, samples: 47\n", " │ │ └─╴value: 0.0\n", - " │ │ └─╴feat: 1 <= -0.94, samples: 4\n", + " │ │ └─╴feat: 0 <= 1.41, samples: 5\n", " │ │ └─╴value: 1.0\n", " │ │ └─╴value: 0.0\n", - " │ └─╴feat: 0 <= 1.46, samples: 53\n", - " │ ├─feat: 3 <= 2.13, samples: 42\n", + " │ └─╴feat: 1 <= 1.51, samples: 261\n", + " │ ├─feat: 3 <= 1.46, samples: 218\n", " │ │ └─╴value: 0.0\n", - " │ │ └─╴value: 1.0\n", - " │ └─╴feat: 3 <= -1.24, samples: 11\n", + " │ │ └─╴feat: 3 <= 2.23, samples: 15\n", + " │ │ ├─feat: 0 <= 2.38, samples: 11\n", + " │ │ │ └─╴value: 0.0\n", + " │ │ │ └─╴value: 1.0\n", + " │ │ └─╴value: 1.0\n", + " │ └─╴feat: 3 <= -0.40, samples: 43\n", " │ └─╴value: 0.0\n", - " │ └─╴value: 1.0\n", - " └─╴feat: 2 <= 2.86, samples: 4853\n", - " ├─feat: 3 <= 0.92, samples: 163\n", - " │ ├─feat: 0 <= 1.79, samples: 62\n", - " │ │ ├─feat: 4 <= 0.21, samples: 59\n", - " │ │ │ └─╴value: 0.0\n", - " │ │ │ └─╴feat: 1 <= -0.21, samples: 17\n", - " │ │ │ └─╴value: 0.0\n", - " │ │ │ └─╴value: 0.0\n", - " │ │ └─╴value: 1.0\n", - " │ └─╴feat: 0 <= -0.76, samples: 101\n", - " │ └─╴value: 0.0\n", - " │ └─╴feat: 3 <= 1.41, samples: 97\n", - " │ ├─feat: 3 <= 1.38, samples: 14\n", - " │ │ └─╴value: 1.0\n", - " │ │ └─╴value: 0.0\n", - " │ └─╴feat: 4 <= 0.56, samples: 83\n", - " │ └─╴value: 1.0\n", - " │ └─╴value: 1.0\n", - " └─╴feat: 2 <= 3.66, samples: 4690\n", - " ├─feat: 3 <= 0.43, samples: 362\n", - " │ ├─feat: 4 <= -0.07, samples: 16\n", - " │ │ └─╴value: 1.0\n", - " │ │ └─╴value: 0.0\n", - " │ └─╴feat: 2 <= 2.87, samples: 346\n", - " │ ├─feat: 0 <= 0.91, samples: 5\n", - " │ │ └─╴value: 0.0\n", - " │ │ └─╴value: 1.0\n", - " │ └─╴value: 1.0\n", + " │ └─╴feat: 3 <= 0.50, samples: 37\n", + " │ ├─feat: 3 <= 0.28, samples: 13\n", + " │ │ └─╴value: 1.0\n", + " │ │ └─╴value: 0.0\n", + " │ └─╴value: 1.0\n", + " └─╴feat: 0 <= 2.99, samples: 4853\n", + " ├─feat: 1 <= 1.10, samples: 107\n", + " │ ├─feat: 1 <= 0.44, samples: 27\n", + " │ │ └─╴value: 0.0\n", + " │ │ └─╴feat: 2 <= 0.67, samples: 9\n", + " │ │ └─╴value: 1.0\n", + " │ │ └─╴value: 0.0\n", + " │ └─╴value: 1.0\n", + " └─╴feat: 0 <= 3.89, samples: 4746\n", + " ├─feat: 1 <= 1.24, samples: 471\n", + " │ ├─feat: 3 <= 0.81, samples: 57\n", + " │ │ ├─feat: 3 <= 0.60, samples: 11\n", + " │ │ │ └─╴value: 1.0\n", + " │ │ │ └─╴value: 0.0\n", + " │ │ └─╴feat: 0 <= 3.84, samples: 46\n", + " │ │ └─╴value: 1.0\n", + " │ │ └─╴value: 0.0\n", + " │ └─╴value: 1.0\n", " └─╴value: 1.0\n", "\n", "—————————————————————— tree: 5/5 ———————————————————————\n", "split: CART, impurity: Entropy, leaf: Mode, nodes: 45\n", "maxDepth: 7, reached depth: 7, minSamplesSplit: 2\n", "························································\n", - "â•´feat: 2 <= 2.50, samples: 9600\n", - " ├─feat: 2 <= 2.05, samples: 4748\n", - " │ ├─feat: 3 <= 2.48, samples: 4643\n", + "â•´feat: 0 <= 2.43, samples: 9600\n", + " ├─feat: 0 <= 1.73, samples: 4853\n", + " │ ├─feat: 1 <= 2.24, samples: 4639\n", " │ │ └─╴value: 0.0\n", - " │ │ └─╴feat: 2 <= 1.30, samples: 50\n", + " │ │ └─╴feat: 3 <= 2.00, samples: 51\n", " │ │ └─╴value: 0.0\n", - " │ │ └─╴value: 1.0\n", - " │ └─╴feat: 3 <= 1.61, samples: 105\n", - " │ ├─feat: 0 <= 1.12, samples: 69\n", - " │ │ ├─feat: 3 <= 0.92, samples: 60\n", + " │ │ └─╴feat: 1 <= 2.61, samples: 2\n", + " │ │ └─╴value: 1.0\n", + " │ │ └─╴value: 0.0\n", + " │ └─╴feat: 1 <= 1.97, samples: 214\n", + " │ ├─feat: 3 <= 2.59, samples: 185\n", + " │ │ ├─feat: 1 <= 1.45, samples: 180\n", " │ │ │ └─╴value: 0.0\n", - " │ │ │ └─╴feat: 2 <= 2.30, samples: 9\n", - " │ │ │ └─╴value: 0.0\n", + " │ │ │ └─╴feat: 4 <= 0.46, samples: 14\n", " │ │ │ └─╴value: 1.0\n", - " │ │ └─╴feat: 4 <= -0.46, samples: 9\n", - " │ │ └─╴value: 0.0\n", - " │ │ └─╴value: 1.0\n", - " │ └─╴feat: 4 <= 0.62, samples: 36\n", + " │ │ │ └─╴value: 0.0\n", + " │ │ └─╴value: 1.0\n", + " │ └─╴feat: 3 <= 0.34, samples: 29\n", + " │ ├─feat: 4 <= 1.07, samples: 10\n", + " │ │ └─╴value: 0.0\n", + " │ │ └─╴value: 1.0\n", " │ └─╴value: 1.0\n", - " │ └─╴feat: 3 <= 2.60, samples: 5\n", - " │ └─╴value: 0.0\n", - " │ └─╴value: 1.0\n", - " └─╴feat: 2 <= 3.02, samples: 4852\n", - " ├─feat: 3 <= 1.41, samples: 107\n", - " │ ├─feat: 0 <= 0.52, samples: 38\n", - " │ │ ├─feat: 1 <= -1.30, samples: 25\n", - " │ │ │ └─╴value: 1.0\n", - " │ │ │ └─╴value: 0.0\n", - " │ │ └─╴feat: 0 <= 0.94, samples: 13\n", - " │ │ ├─feat: 0 <= 0.67, samples: 5\n", - " │ │ │ └─╴value: 1.0\n", - " │ │ │ └─╴value: 0.0\n", + " └─╴feat: 0 <= 2.99, samples: 4747\n", + " ├─feat: 1 <= 1.21, samples: 107\n", + " │ ├─feat: 1 <= 0.23, samples: 31\n", + " │ │ └─╴value: 0.0\n", + " │ │ └─╴feat: 3 <= 0.30, samples: 15\n", + " │ │ └─╴value: 0.0\n", " │ │ └─╴value: 1.0\n", - " │ └─╴feat: 1 <= 2.00, samples: 69\n", + " │ └─╴feat: 0 <= 2.51, samples: 76\n", + " │ ├─feat: 3 <= 0.34, samples: 4\n", + " │ │ └─╴value: 0.0\n", + " │ │ └─╴value: 1.0\n", " │ └─╴value: 1.0\n", - " │ └─╴value: 0.0\n", - " └─╴feat: 3 <= 0.53, samples: 4745\n", - " ├─feat: 2 <= 3.63, samples: 106\n", - " │ ├─feat: 4 <= 0.15, samples: 13\n", - " │ │ └─╴value: 1.0\n", - " │ │ └─╴feat: 2 <= 3.07, samples: 4\n", + " └─╴feat: 1 <= 1.23, samples: 4640\n", + " ├─feat: 0 <= 3.89, samples: 460\n", + " │ ├─feat: 3 <= 0.81, samples: 51\n", + " │ │ ├─feat: 2 <= 0.44, samples: 10\n", + " │ │ │ └─╴value: 1.0\n", + " │ │ │ └─╴value: 0.0\n", + " │ │ └─╴feat: 0 <= 3.82, samples: 41\n", " │ │ └─╴value: 1.0\n", " │ │ └─╴value: 0.0\n", " │ └─╴value: 1.0\n", @@ -405,11 +439,11 @@ { "data": { "text/plain": [ - "[Accuracy(name='tree: 0', accuracy=0.996875),\n", - " Accuracy(name='tree: 1', accuracy=0.9978125),\n", - " Accuracy(name='tree: 2', accuracy=0.9965625),\n", - " Accuracy(name='tree: 3', accuracy=0.998125),\n", - " Accuracy(name='tree: 4', accuracy=0.9965625)]" + "[Accuracy(name='tree: 0', accuracy=0.9959375),\n", + " Accuracy(name='tree: 1', accuracy=0.9946875),\n", + " Accuracy(name='tree: 2', accuracy=0.9953125),\n", + " Accuracy(name='tree: 3', accuracy=0.9946875),\n", + " Accuracy(name='tree: 4', accuracy=0.9946875)]" ] }, "execution_count": 5, @@ -428,7 +462,7 @@ "outputs": [ { "data": { - "image/png": "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wbxb48yNw5mmiZycHK6mtxnzroYGifgIExp3S9mK410N5t0aixuHk1KisLCQq+ltxryrIQTgDpPgLL29ON7VYN6tsbghIiIiR2FxQ0RERI7C4sbhhBBwu91cTW8z5l0NUwLZJQImZ+ltxfGuBvNujbulHE7TNLjdbtVhBBzmXQ0Jge9L+UZvN453NZh3a5y5cTjDMJCZmQnDMFSHElCYdzU0IdEv2oQmOHVjJ453NZh3ayxuAkBpaanqEAIS824/ASAyRIJzN/bjeFeDefePxQ0RERE5CosbIiIichQWNw4nhEBcXBxX09uMeVfDlEBGkcbdUjbjeFeDebfG3VIOp2kaoqOjVYcRcJh3NSQEPOWqowg8HO9qMO/WOHPjcIZhID09navpbca8q6EJiSExBndL2YzjXQ3m3RqLmwBQUVGhOoSAxLzbTwAIbQXullKA410N5t0/FjdERETkKCxuiIiIyFFY3Dicpmno0aMHNI2X2k7MuxqGBPYXaDC45MZWHO9qMO/WuFvK4YQQcLlcqsMIOMy7KgJFlapjCDwc72ow79ZY7jmcYRhITU3lanqbMe9q6EJiZKwBnbulbMXxrgbzbo3FTQDgwFeDeVdD51YpJTje1WDe/WNxQ0RERI7C4oaIiIgchcWNw2mahvj4eK6mtxnzroYhgV153C1lN453NZh3a8xIAAgKClIdQkBi3tWo5BIEJTje1WDe/WNx43CmaSI1NRWmaaoOJaAw72roAhgZa3JRsc043tVg3q2xuCEiIiJHYXFDREREjsLihoiIiByFxY3DaZqGxMRErqa3GfOuhiGB7ce4W8puHO9qMO/WmJEAUFVVpTqEgMS8qxGsq44gMHG8q8G8+8fixuFM00RGRgZX09uMeVdDF8CQGO6WshvHuxrMuzUWN0REROQoLG6IiIjIUZpFcbNy5Up069YNISEhGDp0KL766ivLY1955RWMGjUKkZGRiIyMxJgxYy54PAG6zkUIKjDvanAxsRoc72ow7/4pL27Wrl2LuXPnYuHChdi7dy/69++PpKQk5Ofn+z1+8+bNuOeee/D5559jx44diIuLw4033ogffvjB5shbBl3XkZiYyF8AmzHvahhSYPsxHYbkohs7cbyrwbxbU17cLFu2DDNmzEBycjL69OmDNWvWIDQ0FK+//rrf49955x384he/wIABA5CQkIBX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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHHCAYAAABDUnkqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABXxklEQVR4nO3de1hVZd438O+9lgKCIAeVrYQnNKhELTXzUHZwojLLp7e08nk8pPbm6GQ5TeWUGpVaNjk2eWo6T4fJpnmtZ6bSMctTmcdMRCECCUw3iIAgDKBr3e8fDFu37GWCsG722t/PdXldcrP25nd/11Z/3mvdewsppQQRERGRQ2iqCyAiIiJqSmxuiIiIyFHY3BAREZGjsLkhIiIiR2FzQ0RERI7C5oaIiIgchc0NEREROQqbGyIiInIUNjdERETkKGxuiIiIyFHY3BC1MG+99RaEED5/Pf74483yM7/55hs89dRTKC0tbZbnvxB1eezcuVN1KY22fPlyvPXWW6rLIAoYrVQXQES+Pf300+jevbvXWO/evZvlZ33zzTdITU3FxIkTERkZ2Sw/I5AtX74c7du3x8SJE1WXQhQQ2NwQtVA333wzBgwYoLqMC1JRUYGwsDDVZShTWVmJ0NBQ1WUQBRxeliLyU59//jmuvvpqhIWFITw8HCNHjkR6errXMXv37sXEiRPRo0cPhISEwOVy4b777sOxY8c8xzz11FP43e9+BwDo3r275xJYbm4ucnNzIYTweUlFCIGnnnrK63mEENi/fz/uvfdeREVFYdiwYZ7vv/vuu+jfvz/atGmD6Oho3H333cjPz2/U3CdOnIi2bdsiLy8Pt956K9q2bYu4uDgsW7YMAJCWlobrr78eYWFh6Nq1K95//32vx9dd6tq0aRP+7//9v4iJiUFERATGjx+PkpKSej9v+fLluOyyyxAcHIzOnTtj+vTp9S7hXXvttejduzd27dqFa665BqGhofj973+Pbt26IT09HRs3bvRke+211wIAiouL8cgjjyA5ORlt27ZFREQEbr75Znz//fdez71hwwYIIfDhhx9i/vz5uOiiixASEoIbbrgBP/74Y716t23bhltuuQVRUVEICwtDnz598NJLL3kdk5GRgTvvvBPR0dEICQnBgAED8L//+78NPRVELRJXbohaqOPHj6OoqMhrrH379gCAd955BxMmTEBK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MGjQIGzfvl11SY62adMmjBo1Cp07d4YQAh9//LHqkgLCwoULMXDgQISHh6Njx44YPXo0MjMzVZfleCtWrECfPn08byI3ePBgfP7556rLCijPPfcchBBeb2xLbG4cbdWqVZg1axbmzZuH3bt3o2/fvkhJSUFhYaHq0hyroqICffv2xbJly1SXElA2btyI6dOn49tvv8W6detw8uRJ3HjjjaioqFBdmqNddNFFeO6557Br1y7s3LkT119/PW6//Xakp6erLi0g7NixA6+88gr69OmjupQWh1vBHWzQoEEYOHAgli5dCqD2oy3i4+Pxm9/8Bo8//rji6pxPCIHVq1d7PlqE7HP06FF07NgRGzduxDXXXKO6nIASHR2NF154AZMnT1ZdiqOdOHECV1xxBZYvX45nn30W/fr1w5IlS1SX1WJw5cahampqsGvXLowYMcIzpmkaRowYga1btyqsjKj5HT9+HEDtP7RkD8Mw8MEHH6CiosLys/6o6UyfPh0jR470+jueTmsR71BMTa+oqAiGYXg+xqJObGwsMjIyFFVF1PxM08RDDz2EoUOH8mNZbJCWlobBgwejqqoKbdu2xerVq3HppZeqLsvRPvjgA+zevRs7duxQXUqLxeaGiBxl+vTp2LdvH7Zs2aK6lICQmJiIPXv24Pjx4/joo48wYcIEbNy4kQ1OM8nPz8fMmTOxbt06hISEqC6nxWJz41Dt27eHrusoKCjwGi8oKIDL5VJUFVHzmjFjBv75z39i06ZNuOiii1SXExCCgoLQs2dPAED//v2xY8cOvPTSS3jllVcUV+ZMu3btQmFhIa644grPmGEY2LRpE5YuXYrq6mrouq6wwpaB99w4VFBQEPr374/169d7xkzTxPr163k9nBxHSokZM2Zg9erV+PLLL9G9e3fVJQUs0zRRXV2tugzHuuGGG5CWloY9e/Z4fg0YMADjxo3Dnj172Nj8B1duHGzWrFmYMGECBgwYgCuvvBJLlixBRUUFJk2apLo0xzpx4gR+/PFHz9cHDx7Enj17EB0djS5duiiszNmmT5+O999/H5988gnCw8PhdrsBAO3atUObNm0UV+dcs2fPxs0334wuXbqgvLwc77//PjZs2IC1a9eqLs2xwsPD691LFhYWhpiYGN5jdgY2Nw42duxYHD16FHPnzoXb7Ua/fv2wZs2aejcZU9PZuXMnrrvuOs/Xs2bNAgBMmDABb731lqKqnG/FihUAgGuvvdZr/M0338TEiRPtLyhAFBYWYvz48Thy5AjatWuHPn36YO3atfjVr36lujQKcHyfGyIiInIU3nNDREREjsLmhoiIiByFzQ0RERE5CpsbIiIichQ2N0REROQobG6IiIjIUdjcEBERkaOwuSEiukBCCHz88ceqyyCi/2BzQ0Q+TZw4EUKIer/O/HiJC/HWW28hMjKySZ6rsSZOnIjRo0crrYGImh4/foGILN1000148803vcY6dOigqBprJ0+eROvWrVWXQUQtBFduiMhScHAwXC6X16+6Tx3+5JNPcMUVVyAkJAQ9evRAamoqTp065Xns4sWLkZycjLCwMMTHx+PXv/41Tpw4AQDYsGEDJk2ahOPHj3tWhJ566ikAvi/xREZGej6bKzc3F0IIrFq1CsOHD0dISAjee+89AMBrr72GSy65BCEhIUhKSsLy5csbNN9rr70WDz74IB599FFER0fD5XJ56qqTlZWFa665BiEhIbj00kuxbt26es+Tn5+PMWPGIDIyEtHR0bj99tuRm5sLAMjIyEBoaCjef/99z/Effvgh2rRpg/379zeoXiLyjc0NETXY5s2bMX78eMycORP79+/HK6+8grfeegvz58/3HKNpGv70pz8hPT0db7/9Nr788ks8+uijAIAhQ4ZgyZIliIiIwJEjR3DkyBE88sgjDarh8ccfx8yZM3HgwAGkpKTgvffew9y5czF//nwcOHAACxYswJw5c/D222836HnffvtthIWFYdu2bVi0aBGefvppTwNjmibuuOMOBAUFYdu2bVi5ciUee+wxr8efPHkSKSkpCA8Px+bNm/H111+jbdu2uOmmm1BTU4OkpCT84Q9/wK9//Wvk5eXh0KFDeOCBB/D888/j0ksvbVCtRGRBEhH5MGHCBKnrugwLC/P8uvPOO6WUUt5www1ywYIFXse/8847slOnTpbP97e//U3GxMR4vn7zzTdlu3bt6h0HQK5evdprrF27dvLNN9+UUkp58OBBCUAuWbLE65iEhAT5/vvve40988wzcvDgweec4+233+75evjw4XLYsGFexwwcOFA+9thjUkop165dK1u1aiV//vlnz/c///xzr5rfeecdmZiYKE3T9BxTXV0t27RpI9euXesZGzlypLz66qvlDTfcIG+88Uav44nowvCeGyKydN1112HFihWer8PCwgAA33//Pb7++muvlRrDMFBVVYXKykqEhobiiy++wMKFC5GRkYGysjKcOnXK6/sXasCAAZ7fV1RUIDs7G5MnT8bUqVM946dOnUK7du0a9Lx9+vTx+rpTp04oLCwEABw4cADx8fHo3Lmz5/uDBw/2Ov7777/Hjz/+iPDwcK/xqqoqZGdne75+4403cPHFF0PTNKSnp0MI0aA6icgamxsishQWFoaePXvWGz9x4gRSU1Nxxx131PteSEgIcnNzceutt2LatGmYP38+oqOjsWXLFkyePBk1NTXnbG6EEJBSeo2dPHnSZ21n1gMAr776KgYNGuR1XN09Qufr7BuThRAwTfO8H3/ixAn079/fcx/Qmc68Gfv7779HRUUFNE3DkSNH0KlTpwbVSUTW2NwQUYNdccUVyMzM9Nn4AMCuXbtgmiZefPFFaFrtrX0ffvih1zFBQUEwDKPeYzt06IAjR454vs7KykJlZeU564mNjUXnzp2Rk5ODcePGNXQ65+2SSy5Bfn6+VzPy7bffeh1zxRVXYNWqVejYsSMiIiJ8Pk9xcTEmTpyIJ554AkeOHMG4ceOwe/dutGnTptlqJwokvKGYiBps7ty5+Mtf/oLU1FSkp6fjwIED+OCDD/Dkk08CAHr27ImTJ0/i5ZdfRk5ODt555x2sXLnS6zm6deuGEydOYP369SgqKvI0MNdffz2WLl2K7777Djt37sQDDzxwXtu8U1NTsXDhQvzpT3/CDz/8gLS0NLz55ptYvHhxk817xIgRuPjiizFhwgR8//332Lx5M5544gmvY8aNG4f27dvj9ttvx+bNm3Hw4EFs2LABDz74IA4dOgQAeOCBBxAfH48nn3wSixcvhmEYDb6hmoissbkhogZLSUnBP//5T/zrX//CwIEDcdVVV+GPf/wjunbtCgDo27cvFi9ejOeffx69e/fGe++9h4ULF3o9x5AhQ/DAAw9g7Nix6NChAxYtWgQAePHFFxEfH4+rr74a9957Lx555JHzukdnypQpeO211/Dmm28iOTkZw4cPx1tvvYXu3bs32bw1TcPq1avx73//G1deeSWmTJnidd8RAISGhmLTpk3o0qUL7rjjDlxyySWYPHkyqqqqEBERgb/85S/47LPP8M4776BVq1YICwvDu+++i1dffRWff/55k9VKFMiEPPviNhEREZEf48oNEREROQqbGyIiInIUNjdERETkKGxuiIiIyFHY3BAREZGjsLkhIiIiR2FzQ0RERI7C5oaIiIgchc0NEREROQqbGyIiInIUNjdERETkKGxuiIiIyFH+PxbVkjdJ4oNxAAAAAElFTkSuQmCC", "text/plain": [ "<Figure size 640x480 with 1 Axes>" ] @@ -476,19 +510,19 @@ "————————— confusion matrix —————————\n", " Class 0 Class 1 \n", "····································\n", - " Class 0 1596 4 \n", + " Class 0 1595 5 \n", " 49% 0% \n", "····································\n", - " Class 1 3 1597 \n", + " Class 1 7 1593 \n", " 0% 49% \n", "\n", "———————————————————————————————— scores ———————————————————————————————\n", " accuracy precision sensitivity miss rate \n", "·······································································\n", - " Class 0 0.998 0.998 0.998 0.003 \n", - " Class 1 0.998 0.998 0.998 0.002 \n", + " Class 0 0.996 0.996 0.997 0.003 \n", + " Class 1 0.996 0.997 0.996 0.004 \n", "·······································································\n", - " total 0.998 0.998 0.998 0.002 \n" + " total 0.996 0.996 0.996 0.004 \n" ] } ], @@ -528,125 +562,161 @@ "voting: Majority, booster: None, bootstrapping: True\n", "\n", "————————————————————— tree: 01/15 ——————————————————————\n", - "split: CART, impurity: Entropy, leaf: Mode, nodes: 35\n", + "split: CART, impurity: Entropy, leaf: Mode, nodes: 47\n", "maxDepth: 7, reached depth: 7, minSamplesSplit: 2\n", "························································\n", - "â•´feat: 2 <= 2.14, samples: 9600\n", - " ├─feat: 3 <= 2.15, samples: 4747\n", - " │ └─╴value: 0.0\n", - " │ └─╴feat: 2 <= 1.65, samples: 104\n", - " │ └─╴value: 0.0\n", - " │ └─╴feat: 0 <= -1.22, samples: 8\n", - " │ └─╴value: 0.0\n", - " │ └─╴value: 1.0\n", - " └─╴feat: 2 <= 3.24, samples: 4853\n", - " ├─feat: 3 <= 0.71, samples: 267\n", - " │ ├─feat: 0 <= 1.74, samples: 56\n", - " │ │ ├─feat: 4 <= 0.15, samples: 53\n", + "â•´feat: 0 <= 2.65, samples: 9600\n", + " ├─feat: 0 <= 2.09, samples: 4855\n", + " │ ├─feat: 0 <= 1.38, samples: 4748\n", + " │ │ └─╴value: 0.0\n", + " │ │ └─╴feat: 1 <= 1.59, samples: 312\n", + " │ │ ├─feat: 3 <= 2.41, samples: 295\n", + " │ │ │ └─╴value: 0.0\n", + " │ │ │ └─╴feat: 0 <= 1.41, samples: 4\n", + " │ │ │ └─╴value: 1.0\n", + " │ │ │ └─╴value: 0.0\n", + " │ │ └─╴feat: 3 <= 0.60, samples: 17\n", + " │ │ ├─feat: 1 <= 1.76, samples: 10\n", + " │ │ │ └─╴value: 0.0\n", + " │ │ │ └─╴value: 0.0\n", + " │ │ └─╴value: 1.0\n", + " │ └─╴feat: 1 <= 1.22, samples: 107\n", + " │ ├─feat: 2 <= -1.25, samples: 58\n", + " │ │ └─╴value: 1.0\n", + " │ │ └─╴value: 0.0\n", + " │ └─╴feat: 1 <= 1.93, samples: 49\n", + " │ ├─feat: 2 <= 0.91, samples: 14\n", + " │ │ ├─feat: 0 <= 2.56, samples: 9\n", + " │ │ │ └─╴value: 0.0\n", + " │ │ │ └─╴value: 1.0\n", + " │ │ └─╴value: 1.0\n", + " │ └─╴feat: 3 <= -0.38, samples: 35\n", + " │ └─╴value: 0.0\n", + " │ └─╴value: 1.0\n", + " └─╴feat: 0 <= 3.03, samples: 4745\n", + " ├─feat: 1 <= 0.99, samples: 108\n", + " │ ├─feat: 4 <= 0.30, samples: 23\n", + " │ │ ├─feat: 2 <= 1.14, samples: 19\n", " │ │ │ └─╴value: 0.0\n", - " │ │ │ └─╴feat: 0 <= 0.75, samples: 17\n", - " │ │ │ └─╴value: 0.0\n", + " │ │ │ └─╴feat: 0 <= 2.77, samples: 2\n", " │ │ │ └─╴value: 1.0\n", + " │ │ │ └─╴value: 0.0\n", " │ │ └─╴value: 1.0\n", - " │ └─╴feat: 3 <= 1.96, samples: 211\n", - " │ ├─feat: 2 <= 2.30, samples: 64\n", - " │ │ └─╴value: 0.0\n", - " │ │ └─╴feat: 1 <= 0.02, samples: 55\n", - " │ │ └─╴value: 1.0\n", - " │ │ └─╴value: 1.0\n", - " │ └─╴feat: 2 <= 2.34, samples: 147\n", - " │ ├─feat: 2 <= 2.34, samples: 20\n", - " │ │ └─╴value: 1.0\n", - " │ │ └─╴value: 0.0\n", - " │ └─╴value: 1.0\n", - " └─╴feat: 3 <= 0.22, samples: 4586\n", - " ├─feat: 2 <= 3.59, samples: 51\n", - " │ ├─feat: 3 <= -0.28, samples: 3\n", - " │ │ └─╴value: 1.0\n", + " │ └─╴value: 1.0\n", + " └─╴feat: 1 <= 1.22, samples: 4637\n", + " ├─feat: 0 <= 3.91, samples: 459\n", + " │ ├─feat: 1 <= 1.20, samples: 56\n", + " │ │ ├─feat: 3 <= 0.82, samples: 52\n", + " │ │ │ └─╴value: 1.0\n", + " │ │ │ └─╴value: 1.0\n", " │ │ └─╴value: 0.0\n", " │ └─╴value: 1.0\n", " └─╴value: 1.0\n", "\n", "————————————————————— tree: 02/15 ——————————————————————\n", - "split: CART, impurity: Entropy, leaf: Mode, nodes: 33\n", + "split: CART, impurity: Entropy, leaf: Mode, nodes: 57\n", "maxDepth: 7, reached depth: 7, minSamplesSplit: 2\n", "························································\n", - "â•´feat: 2 <= 2.28, samples: 9600\n", - " ├─feat: 2 <= 1.88, samples: 4747\n", - " │ └─╴value: 0.0\n", - " │ └─╴feat: 3 <= 2.00, samples: 105\n", - " │ ├─feat: 0 <= 1.86, samples: 87\n", + "â•´feat: 0 <= 2.31, samples: 9600\n", + " ├─feat: 0 <= 1.74, samples: 4747\n", + " │ ├─feat: 3 <= 2.32, samples: 4590\n", + " │ │ └─╴value: 0.0\n", + " │ │ └─╴feat: 0 <= 1.24, samples: 51\n", + " │ │ └─╴value: 0.0\n", + " │ │ └─╴value: 1.0\n", + " │ └─╴feat: 1 <= 1.53, samples: 157\n", + " │ ├─feat: 3 <= 1.86, samples: 134\n", " │ │ └─╴value: 0.0\n", - " │ │ └─╴value: 1.0\n", - " │ └─╴feat: 0 <= -1.24, samples: 18\n", - " │ └─╴value: 0.0\n", + " │ │ └─╴feat: 0 <= 2.04, samples: 2\n", + " │ │ └─╴value: 0.0\n", + " │ │ └─╴value: 1.0\n", + " │ └─╴feat: 3 <= 0.90, samples: 23\n", + " │ ├─feat: 1 <= 1.64, samples: 15\n", + " │ │ ├─feat: 1 <= 1.53, samples: 6\n", + " │ │ │ └─╴value: 0.0\n", + " │ │ │ └─╴value: 1.0\n", + " │ │ └─╴feat: 0 <= 2.16, samples: 9\n", + " │ │ └─╴value: 0.0\n", + " │ │ └─╴value: 1.0\n", " │ └─╴value: 1.0\n", - " └─╴feat: 2 <= 3.35, samples: 4853\n", - " ├─feat: 3 <= 1.41, samples: 320\n", - " │ ├─feat: 0 <= 0.48, samples: 99\n", + " └─╴feat: 0 <= 2.81, samples: 4853\n", + " ├─feat: 1 <= 0.64, samples: 107\n", + " │ ├─feat: 3 <= 1.71, samples: 28\n", " │ │ └─╴value: 0.0\n", - " │ │ └─╴feat: 2 <= 2.99, samples: 61\n", - " │ │ ├─feat: 4 <= 0.87, samples: 40\n", - " │ │ │ └─╴value: 0.0\n", - " │ │ │ └─╴value: 1.0\n", + " │ │ └─╴feat: 0 <= 2.65, samples: 2\n", + " │ │ └─╴value: 0.0\n", " │ │ └─╴value: 1.0\n", - " │ └─╴feat: 2 <= 2.35, samples: 221\n", - " │ ├─feat: 4 <= 0.56, samples: 13\n", - " │ │ └─╴value: 1.0\n", - " │ │ └─╴value: 0.0\n", - " │ └─╴value: 1.0\n", - " └─╴feat: 3 <= 0.57, samples: 4533\n", - " ├─feat: 2 <= 3.65, samples: 150\n", - " │ ├─feat: 3 <= 0.40, samples: 9\n", - " │ │ ├─feat: 0 <= -0.57, samples: 4\n", - " │ │ │ └─╴value: 1.0\n", - " │ │ │ └─╴value: 0.0\n", - " │ │ └─╴value: 1.0\n", + " │ └─╴feat: 3 <= 0.48, samples: 79\n", + " │ ├─feat: 0 <= 2.50, samples: 22\n", + " │ │ ├─feat: 1 <= 1.73, samples: 13\n", + " │ │ │ └─╴value: 0.0\n", + " │ │ │ └─╴value: 0.0\n", + " │ │ └─╴feat: 4 <= -0.92, samples: 9\n", + " │ │ └─╴value: 0.0\n", + " │ │ └─╴value: 1.0\n", + " │ └─╴feat: 2 <= 0.70, samples: 57\n", + " │ └─╴value: 1.0\n", + " │ └─╴feat: 2 <= 0.83, samples: 18\n", + " │ └─╴value: 0.0\n", + " │ └─╴value: 1.0\n", + " └─╴feat: 1 <= 0.42, samples: 4746\n", + " ├─feat: 0 <= 3.53, samples: 105\n", + " │ ├─feat: 3 <= 0.46, samples: 18\n", + " │ │ └─╴value: 0.0\n", + " │ │ └─╴feat: 2 <= 0.99, samples: 11\n", + " │ │ └─╴value: 1.0\n", + " │ │ └─╴value: 0.0\n", " │ └─╴value: 1.0\n", - " └─╴value: 1.0\n", + " └─╴feat: 1 <= 1.24, samples: 4641\n", + " ├─feat: 1 <= 1.20, samples: 408\n", + " │ └─╴value: 1.0\n", + " │ └─╴feat: 0 <= 3.88, samples: 32\n", + " │ └─╴value: 0.0\n", + " │ └─╴value: 1.0\n", + " └─╴value: 1.0\n", "\n", "————————————————————— tree: 03/15 ——————————————————————\n", "split: CART, impurity: Entropy, leaf: Mode, nodes: 43\n", "maxDepth: 7, reached depth: 7, minSamplesSplit: 2\n", "························································\n", - "â•´feat: 2 <= 2.36, samples: 9600\n", - " ├─feat: 2 <= 1.77, samples: 4747\n", - " │ ├─feat: 2 <= 1.65, samples: 4591\n", + "â•´feat: 0 <= 2.60, samples: 9600\n", + " ├─feat: 0 <= 2.08, samples: 4747\n", + " │ ├─feat: 0 <= 1.41, samples: 4642\n", " │ │ └─╴value: 0.0\n", - " │ │ └─╴feat: 3 <= 3.06, samples: 51\n", + " │ │ └─╴feat: 1 <= 1.40, samples: 305\n", " │ │ └─╴value: 0.0\n", - " │ │ └─╴value: 1.0\n", - " │ └─╴feat: 3 <= 1.01, samples: 156\n", - " │ ├─feat: 2 <= 2.34, samples: 111\n", + " │ │ └─╴feat: 0 <= 1.42, samples: 23\n", + " │ │ └─╴value: 1.0\n", + " │ │ └─╴feat: 1 <= 1.58, samples: 22\n", + " │ │ └─╴value: 0.0\n", + " │ │ └─╴value: 0.0\n", + " │ └─╴feat: 1 <= 1.61, samples: 105\n", + " │ ├─feat: 3 <= 1.41, samples: 62\n", " │ │ └─╴value: 0.0\n", - " │ │ └─╴feat: 0 <= -1.20, samples: 2\n", - " │ │ └─╴value: 0.0\n", - " │ │ └─╴value: 1.0\n", - " │ └─╴feat: 0 <= 0.47, samples: 45\n", - " │ ├─feat: 1 <= -1.38, samples: 16\n", - " │ │ └─╴value: 1.0\n", + " │ │ └─╴value: 1.0\n", + " │ └─╴feat: 3 <= 1.00, samples: 43\n", + " │ ├─feat: 3 <= 0.92, samples: 19\n", + " │ │ ├─feat: 3 <= 0.45, samples: 17\n", + " │ │ │ └─╴value: 1.0\n", + " │ │ │ └─╴value: 1.0\n", " │ │ └─╴value: 0.0\n", - " │ └─╴feat: 3 <= 1.77, samples: 29\n", - " │ ├─feat: 3 <= 1.16, samples: 10\n", - " │ │ └─╴value: 1.0\n", - " │ │ └─╴value: 0.0\n", - " │ └─╴value: 1.0\n", - " └─╴feat: 2 <= 2.87, samples: 4853\n", - " ├─feat: 3 <= 0.93, samples: 107\n", - " │ ├─feat: 0 <= 1.74, samples: 42\n", - " │ │ ├─feat: 2 <= 2.70, samples: 39\n", - " │ │ │ └─╴value: 0.0\n", - " │ │ │ └─╴feat: 0 <= -0.55, samples: 5\n", - " │ │ │ └─╴value: 0.0\n", - " │ │ │ └─╴value: 1.0\n", - " │ │ └─╴value: 1.0\n", - " │ └─╴feat: 0 <= -0.81, samples: 65\n", - " │ └─╴value: 0.0\n", + " │ └─╴value: 1.0\n", + " └─╴feat: 1 <= 0.58, samples: 4853\n", + " ├─feat: 0 <= 3.55, samples: 160\n", + " │ ├─feat: 3 <= 1.50, samples: 27\n", + " │ │ └─╴value: 0.0\n", + " │ │ └─╴feat: 2 <= -0.65, samples: 6\n", + " │ │ └─╴value: 0.0\n", + " │ │ └─╴value: 1.0\n", + " │ └─╴feat: 0 <= 3.88, samples: 133\n", + " │ ├─feat: 2 <= -0.66, samples: 9\n", + " │ │ └─╴value: 0.0\n", + " │ │ └─╴value: 1.0\n", " │ └─╴value: 1.0\n", - " └─╴feat: 3 <= 0.37, samples: 4746\n", - " ├─feat: 2 <= 3.62, samples: 106\n", - " │ ├─feat: 4 <= -0.07, samples: 17\n", - " │ │ ├─feat: 1 <= -0.51, samples: 8\n", + " └─╴feat: 1 <= 1.25, samples: 4693\n", + " ├─feat: 0 <= 3.88, samples: 414\n", + " │ ├─feat: 0 <= 3.87, samples: 61\n", + " │ │ ├─feat: 0 <= 2.73, samples: 58\n", " │ │ │ └─╴value: 0.0\n", " │ │ │ └─╴value: 1.0\n", " │ │ └─╴value: 0.0\n", @@ -654,100 +724,98 @@ " └─╴value: 1.0\n", "\n", "————————————————————— tree: 04/15 ——————————————————————\n", - "split: CART, impurity: Entropy, leaf: Mode, nodes: 45\n", + "split: CART, impurity: Entropy, leaf: Mode, nodes: 43\n", "maxDepth: 7, reached depth: 7, minSamplesSplit: 2\n", "························································\n", - "â•´feat: 2 <= 2.15, samples: 9600\n", - " ├─feat: 2 <= 2.00, samples: 4747\n", - " │ ├─feat: 3 <= 1.96, samples: 4694\n", + "â•´feat: 0 <= 2.51, samples: 9600\n", + " ├─feat: 0 <= 1.63, samples: 4747\n", + " │ ├─feat: 3 <= 2.37, samples: 4486\n", " │ │ └─╴value: 0.0\n", - " │ │ └─╴feat: 2 <= 1.67, samples: 153\n", + " │ │ └─╴feat: 0 <= 1.21, samples: 47\n", " │ │ └─╴value: 0.0\n", - " │ │ └─╴feat: 1 <= -0.94, samples: 4\n", + " │ │ └─╴feat: 0 <= 1.41, samples: 5\n", " │ │ └─╴value: 1.0\n", " │ │ └─╴value: 0.0\n", - " │ └─╴feat: 0 <= 1.46, samples: 53\n", - " │ ├─feat: 3 <= 2.13, samples: 42\n", + " │ └─╴feat: 1 <= 1.51, samples: 261\n", + " │ ├─feat: 3 <= 1.46, samples: 218\n", " │ │ └─╴value: 0.0\n", - " │ │ └─╴value: 1.0\n", - " │ └─╴feat: 3 <= -1.24, samples: 11\n", + " │ │ └─╴feat: 3 <= 2.23, samples: 15\n", + " │ │ ├─feat: 0 <= 2.38, samples: 11\n", + " │ │ │ └─╴value: 0.0\n", + " │ │ │ └─╴value: 1.0\n", + " │ │ └─╴value: 1.0\n", + " │ └─╴feat: 3 <= -0.40, samples: 43\n", " │ └─╴value: 0.0\n", - " │ └─╴value: 1.0\n", - " └─╴feat: 2 <= 2.86, samples: 4853\n", - " ├─feat: 3 <= 0.92, samples: 163\n", - " │ ├─feat: 0 <= 1.79, samples: 62\n", - " │ │ ├─feat: 4 <= 0.21, samples: 59\n", - " │ │ │ └─╴value: 0.0\n", - " │ │ │ └─╴feat: 1 <= -0.21, samples: 17\n", - " │ │ │ └─╴value: 0.0\n", - " │ │ │ └─╴value: 0.0\n", - " │ │ └─╴value: 1.0\n", - " │ └─╴feat: 0 <= -0.76, samples: 101\n", - " │ └─╴value: 0.0\n", - " │ └─╴feat: 3 <= 1.41, samples: 97\n", - " │ ├─feat: 3 <= 1.38, samples: 14\n", - " │ │ └─╴value: 1.0\n", - " │ │ └─╴value: 0.0\n", - " │ └─╴feat: 4 <= 0.56, samples: 83\n", - " │ └─╴value: 1.0\n", - " │ └─╴value: 1.0\n", - " └─╴feat: 2 <= 3.66, samples: 4690\n", - " ├─feat: 3 <= 0.43, samples: 362\n", - " │ ├─feat: 4 <= -0.07, samples: 16\n", - " │ │ └─╴value: 1.0\n", - " │ │ └─╴value: 0.0\n", - " │ └─╴feat: 2 <= 2.87, samples: 346\n", - " │ ├─feat: 0 <= 0.91, samples: 5\n", - " │ │ └─╴value: 0.0\n", - " │ │ └─╴value: 1.0\n", - " │ └─╴value: 1.0\n", + " │ └─╴feat: 3 <= 0.50, samples: 37\n", + " │ ├─feat: 3 <= 0.28, samples: 13\n", + " │ │ └─╴value: 1.0\n", + " │ │ └─╴value: 0.0\n", + " │ └─╴value: 1.0\n", + " └─╴feat: 0 <= 2.99, samples: 4853\n", + " ├─feat: 1 <= 1.10, samples: 107\n", + " │ ├─feat: 1 <= 0.44, samples: 27\n", + " │ │ └─╴value: 0.0\n", + " │ │ └─╴feat: 2 <= 0.67, samples: 9\n", + " │ │ └─╴value: 1.0\n", + " │ │ └─╴value: 0.0\n", + " │ └─╴value: 1.0\n", + " └─╴feat: 0 <= 3.89, samples: 4746\n", + " ├─feat: 1 <= 1.24, samples: 471\n", + " │ ├─feat: 3 <= 0.81, samples: 57\n", + " │ │ ├─feat: 3 <= 0.60, samples: 11\n", + " │ │ │ └─╴value: 1.0\n", + " │ │ │ └─╴value: 0.0\n", + " │ │ └─╴feat: 0 <= 3.84, samples: 46\n", + " │ │ └─╴value: 1.0\n", + " │ │ └─╴value: 0.0\n", + " │ └─╴value: 1.0\n", " └─╴value: 1.0\n", "\n", "————————————————————— tree: 05/15 ——————————————————————\n", "split: CART, impurity: Entropy, leaf: Mode, nodes: 45\n", "maxDepth: 7, reached depth: 7, minSamplesSplit: 2\n", "························································\n", - "â•´feat: 2 <= 2.50, samples: 9600\n", - " ├─feat: 2 <= 2.05, samples: 4748\n", - " │ ├─feat: 3 <= 2.48, samples: 4643\n", + "â•´feat: 0 <= 2.43, samples: 9600\n", + " ├─feat: 0 <= 1.73, samples: 4853\n", + " │ ├─feat: 1 <= 2.24, samples: 4639\n", " │ │ └─╴value: 0.0\n", - " │ │ └─╴feat: 2 <= 1.30, samples: 50\n", + " │ │ └─╴feat: 3 <= 2.00, samples: 51\n", " │ │ └─╴value: 0.0\n", - " │ │ └─╴value: 1.0\n", - " │ └─╴feat: 3 <= 1.61, samples: 105\n", - " │ ├─feat: 0 <= 1.12, samples: 69\n", - " │ │ ├─feat: 3 <= 0.92, samples: 60\n", + " │ │ └─╴feat: 1 <= 2.61, samples: 2\n", + " │ │ └─╴value: 1.0\n", + " │ │ └─╴value: 0.0\n", + " │ └─╴feat: 1 <= 1.97, samples: 214\n", + " │ ├─feat: 3 <= 2.59, samples: 185\n", + " │ │ ├─feat: 1 <= 1.45, samples: 180\n", " │ │ │ └─╴value: 0.0\n", - " │ │ │ └─╴feat: 2 <= 2.30, samples: 9\n", - " │ │ │ └─╴value: 0.0\n", + " │ │ │ └─╴feat: 4 <= 0.46, samples: 14\n", " │ │ │ └─╴value: 1.0\n", - " │ │ └─╴feat: 4 <= -0.46, samples: 9\n", - " │ │ └─╴value: 0.0\n", - " │ │ └─╴value: 1.0\n", - " │ └─╴feat: 4 <= 0.62, samples: 36\n", + " │ │ │ └─╴value: 0.0\n", + " │ │ └─╴value: 1.0\n", + " │ └─╴feat: 3 <= 0.34, samples: 29\n", + " │ ├─feat: 4 <= 1.07, samples: 10\n", + " │ │ └─╴value: 0.0\n", + " │ │ └─╴value: 1.0\n", " │ └─╴value: 1.0\n", - " │ └─╴feat: 3 <= 2.60, samples: 5\n", - " │ └─╴value: 0.0\n", - " │ └─╴value: 1.0\n", - " └─╴feat: 2 <= 3.02, samples: 4852\n", - " ├─feat: 3 <= 1.41, samples: 107\n", - " │ ├─feat: 0 <= 0.52, samples: 38\n", - " │ │ ├─feat: 1 <= -1.30, samples: 25\n", - " │ │ │ └─╴value: 1.0\n", - " │ │ │ └─╴value: 0.0\n", - " │ │ └─╴feat: 0 <= 0.94, samples: 13\n", - " │ │ ├─feat: 0 <= 0.67, samples: 5\n", - " │ │ │ └─╴value: 1.0\n", - " │ │ │ └─╴value: 0.0\n", + " └─╴feat: 0 <= 2.99, samples: 4747\n", + " ├─feat: 1 <= 1.21, samples: 107\n", + " │ ├─feat: 1 <= 0.23, samples: 31\n", + " │ │ └─╴value: 0.0\n", + " │ │ └─╴feat: 3 <= 0.30, samples: 15\n", + " │ │ └─╴value: 0.0\n", " │ │ └─╴value: 1.0\n", - " │ └─╴feat: 1 <= 2.00, samples: 69\n", + " │ └─╴feat: 0 <= 2.51, samples: 76\n", + " │ ├─feat: 3 <= 0.34, samples: 4\n", + " │ │ └─╴value: 0.0\n", + " │ │ └─╴value: 1.0\n", " │ └─╴value: 1.0\n", - " │ └─╴value: 0.0\n", - " └─╴feat: 3 <= 0.53, samples: 4745\n", - " ├─feat: 2 <= 3.63, samples: 106\n", - " │ ├─feat: 4 <= 0.15, samples: 13\n", - " │ │ └─╴value: 1.0\n", - " │ │ └─╴feat: 2 <= 3.07, samples: 4\n", + " └─╴feat: 1 <= 1.23, samples: 4640\n", + " ├─feat: 0 <= 3.89, samples: 460\n", + " │ ├─feat: 3 <= 0.81, samples: 51\n", + " │ │ ├─feat: 2 <= 0.44, samples: 10\n", + " │ │ │ └─╴value: 1.0\n", + " │ │ │ └─╴value: 0.0\n", + " │ │ └─╴feat: 0 <= 3.82, samples: 41\n", " │ │ └─╴value: 1.0\n", " │ │ └─╴value: 0.0\n", " │ └─╴value: 1.0\n", @@ -776,19 +844,19 @@ "————————— confusion matrix —————————\n", " Class 0 Class 1 \n", "····································\n", - " Class 0 1596 4 \n", + " Class 0 1595 5 \n", " 49% 0% \n", "····································\n", - " Class 1 3 1597 \n", + " Class 1 7 1593 \n", " 0% 49% \n", "\n", "———————————————————————————————— scores ———————————————————————————————\n", " accuracy precision sensitivity miss rate \n", "·······································································\n", - " Class 0 0.998 0.998 0.998 0.003 \n", - " Class 1 0.998 0.998 0.998 0.002 \n", + " Class 0 0.996 0.996 0.997 0.003 \n", + " Class 1 0.996 0.997 0.996 0.004 \n", "·······································································\n", - " total 0.998 0.998 0.998 0.002 \n" + " total 0.996 0.996 0.996 0.004 \n" ] } ], diff --git a/forrest-test.json b/forrest-test.json index 9bdd65f..8b223f8 100644 --- a/forrest-test.json +++ b/forrest-test.json @@ -1,5 +1,5 @@ { - "datetime": "2024-03-05T17:00:54.049104", + "datetime": "2024-03-06T16:31:06.736599", "qualifiedName": [ "machineLearning.rf.randomForrest", "RandomForest" @@ -35,8 +35,8 @@ }, "nodes": { "0": { - "threshold": 2.138594686343364, - "feature": 2, + "threshold": 2.6508121495188592, + "feature": 0, "leftID": 1, "rightID": 2, "id": 0, @@ -46,8 +46,8 @@ "bakedValues": null }, "1": { - "threshold": 2.153123334244971, - "feature": 3, + "threshold": 2.094633534141723, + "feature": 0, "leftID": 3, "rightID": 4, "id": 1, @@ -57,10 +57,10 @@ "bakedValues": null }, "2": { - "threshold": 3.23503187450122, - "feature": 2, - "leftID": 9, - "rightID": 10, + "threshold": 3.0304443896857114, + "feature": 0, + "leftID": 29, + "rightID": 30, "id": 2, "isRoot": false, "parent": 0, @@ -68,13 +68,57 @@ "bakedValues": null }, "3": { + "threshold": 1.380108741982287, + "feature": 0, + "leftID": 5, + "rightID": 6, + "id": 3, + "isRoot": false, + "parent": 1, + "rawValues": null, + "bakedValues": null + }, + "4": { + "threshold": 1.220610408271926, + "feature": 1, + "leftID": 17, + "rightID": 18, + "id": 4, + "isRoot": false, + "parent": 1, + "rawValues": null, + "bakedValues": null + }, + "29": { + "threshold": 0.9910222456814493, + "feature": 1, + "leftID": 31, + "rightID": 32, + "id": 29, + "isRoot": false, + "parent": 2, + "rawValues": null, + "bakedValues": null + }, + "30": { + "threshold": 1.2155002485242046, + "feature": 1, + "leftID": 39, + "rightID": 40, + "id": 30, + "isRoot": false, + "parent": 2, + "rawValues": null, + "bakedValues": null + }, + "5": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 3, + "id": 5, "isRoot": false, - "parent": 1, + "parent": 3, "rawValues": [ 0.0, 0.0, @@ -4416,354 +4460,6 @@ 0.0, 0.0, 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - "bakedValues": 0 - }, - "4": { - "threshold": 1.652861078770891, - "feature": 2, - "leftID": 5, - "rightID": 6, - "id": 4, - "isRoot": false, - "parent": 1, - "rawValues": null, - "bakedValues": null - }, - "9": { - "threshold": 0.7105693823045339, - "feature": 3, - "leftID": 11, - "rightID": 12, - "id": 9, - "isRoot": false, - "parent": 2, - "rawValues": null, - "bakedValues": null - }, - "10": { - "threshold": 0.21554069815822055, - "feature": 3, - "leftID": 29, - "rightID": 30, - "id": 10, - "isRoot": false, - "parent": 2, - "rawValues": null, - "bakedValues": null - }, - "5": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 5, - "isRoot": false, - "parent": 4, - "rawValues": [ 0.0, 0.0, 0.0, @@ -4864,57 +4560,57 @@ "bakedValues": 0 }, "6": { - "threshold": -1.2185192647840286, - "feature": 0, + "threshold": 1.5924803852157647, + "feature": 1, "leftID": 7, "rightID": 8, "id": 6, "isRoot": false, - "parent": 4, + "parent": 3, "rawValues": null, "bakedValues": null }, - "11": { - "threshold": 1.7392927529302031, - "feature": 0, - "leftID": 13, - "rightID": 14, - "id": 11, + "17": { + "threshold": -1.2458193836605025, + "feature": 2, + "leftID": 19, + "rightID": 20, + "id": 17, "isRoot": false, - "parent": 9, + "parent": 4, "rawValues": null, "bakedValues": null }, - "12": { - "threshold": 1.9614077954632092, - "feature": 3, - "leftID": 19, - "rightID": 20, - "id": 12, + "18": { + "threshold": 1.934480045499183, + "feature": 1, + "leftID": 21, + "rightID": 22, + "id": 18, "isRoot": false, - "parent": 9, + "parent": 4, "rawValues": null, "bakedValues": null }, - "29": { - "threshold": 3.587483795694464, - "feature": 2, - "leftID": 31, - "rightID": 32, - "id": 29, + "31": { + "threshold": 0.29596421860514166, + "feature": 4, + "leftID": 33, + "rightID": 34, + "id": 31, "isRoot": false, - "parent": 10, + "parent": 29, "rawValues": null, "bakedValues": null }, - "30": { + "32": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 30, + "id": 32, "isRoot": false, - "parent": 10, + "parent": 29, "rawValues": [ 1.0, 1.0, @@ -5000,6 +4696,30 @@ 1.0, 1.0, 1.0, + 1.0 + ], + "bakedValues": 1 + }, + "39": { + "threshold": 3.9110719450850837, + "feature": 0, + "leftID": 41, + "rightID": 42, + "id": 39, + "isRoot": false, + "parent": 30, + "rawValues": null, + "bakedValues": null + }, + "40": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 40, + "isRoot": false, + "parent": 30, + "rawValues": [ 1.0, 1.0, 1.0, @@ -9177,9 +8897,183 @@ 1.0, 1.0, 1.0, + 1.0 + ], + "bakedValues": 1 + }, + "7": { + "threshold": 2.412617518370346, + "feature": 3, + "leftID": 9, + "rightID": 10, + "id": 7, + "isRoot": false, + "parent": 6, + "rawValues": null, + "bakedValues": null + }, + "8": { + "threshold": 0.6035790569580909, + "feature": 3, + "leftID": 13, + "rightID": 14, + "id": 8, + "isRoot": false, + "parent": 6, + "rawValues": null, + "bakedValues": null + }, + "19": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 19, + "isRoot": false, + "parent": 17, + "rawValues": [ + 1.0 + ], + "bakedValues": 1 + }, + "20": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 20, + "isRoot": false, + "parent": 17, + "rawValues": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "bakedValues": 0 + }, + "21": { + "threshold": 0.9098478108072706, + "feature": 2, + "leftID": 23, + "rightID": 24, + "id": 21, + "isRoot": false, + "parent": 18, + "rawValues": null, + "bakedValues": null + }, + "22": { + "threshold": -0.3771908995190986, + "feature": 3, + "leftID": 27, + "rightID": 28, + "id": 22, + "isRoot": false, + "parent": 18, + "rawValues": null, + "bakedValues": null + }, + "33": { + "threshold": 1.1433085137681471, + "feature": 2, + "leftID": 35, + "rightID": 36, + "id": 33, + "isRoot": false, + "parent": 31, + "rawValues": null, + "bakedValues": null + }, + "34": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 34, + "isRoot": false, + "parent": 31, + "rawValues": [ 1.0, 1.0, 1.0, + 1.0 + ], + "bakedValues": 1 + }, + "41": { + "threshold": 1.1999577246880841, + "feature": 1, + "leftID": 43, + "rightID": 44, + "id": 41, + "isRoot": false, + "parent": 39, + "rawValues": null, + "bakedValues": null + }, + "42": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 42, + "isRoot": false, + "parent": 39, + "rawValues": [ 1.0, 1.0, 1.0, @@ -9450,110 +9344,14 @@ 1.0, 1.0, 1.0, - 1.0 - ], - "bakedValues": 1 - }, - "7": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 7, - "isRoot": false, - "parent": 6, - "rawValues": [ - 0.0 - ], - "bakedValues": 0 - }, - "8": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 8, - "isRoot": false, - "parent": 6, - "rawValues": [ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, - 1.0 - ], - "bakedValues": 1 - }, - "13": { - "threshold": 0.153490041320844, - "feature": 4, - "leftID": 15, - "rightID": 16, - "id": 13, - "isRoot": false, - "parent": 11, - "rawValues": null, - "bakedValues": null - }, - "14": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 14, - "isRoot": false, - "parent": 11, - "rawValues": [ 1.0, 1.0, - 1.0 - ], - "bakedValues": 1 - }, - "19": { - "threshold": 2.2992924806782846, - "feature": 2, - "leftID": 21, - "rightID": 22, - "id": 19, - "isRoot": false, - "parent": 12, - "rawValues": null, - "bakedValues": null - }, - "20": { - "threshold": 2.3425895693414676, - "feature": 2, - "leftID": 25, - "rightID": 26, - "id": 20, - "isRoot": false, - "parent": 12, - "rawValues": null, - "bakedValues": null - }, - "31": { - "threshold": -0.28029786166505005, - "feature": 3, - "leftID": 33, - "rightID": 34, - "id": 31, - "isRoot": false, - "parent": 29, - "rawValues": null, - "bakedValues": null - }, - "32": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 32, - "isRoot": false, - "parent": 29, - "rawValues": [ 1.0, 1.0, 1.0, @@ -9595,127 +9393,6 @@ 1.0, 1.0, 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0 - ], - "bakedValues": 1 - }, - "15": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 15, - "isRoot": false, - "parent": 13, - "rawValues": [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - "bakedValues": 0 - }, - "16": { - "threshold": 0.747030020602264, - "feature": 0, - "leftID": 17, - "rightID": 18, - "id": 16, - "isRoot": false, - "parent": 13, - "rawValues": null, - "bakedValues": null - }, - "21": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 21, - "isRoot": false, - "parent": 19, - "rawValues": [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - "bakedValues": 0 - }, - "22": { - "threshold": 0.017840760541814736, - "feature": 1, - "leftID": 23, - "rightID": 24, - "id": 22, - "isRoot": false, - "parent": 19, - "rawValues": null, - "bakedValues": null - }, - "25": { - "threshold": 2.3353879280242857, - "feature": 2, - "leftID": 27, - "rightID": 28, - "id": 25, - "isRoot": false, - "parent": 20, - "rawValues": null, - "bakedValues": null - }, - "26": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 26, - "isRoot": false, - "parent": 20, - "rawValues": [ 1.0, 1.0, 1.0, @@ -9799,16 +9476,404 @@ 1.0, 1.0, 1.0, + 1.0 + ], + "bakedValues": 1 + }, + "9": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 9, + "isRoot": false, + "parent": 7, + "rawValues": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "bakedValues": 0 + }, + "10": { + "threshold": 1.4052039767165865, + "feature": 0, + "leftID": 11, + "rightID": 12, + "id": 10, + "isRoot": false, + "parent": 7, + "rawValues": null, + "bakedValues": null + }, + "13": { + "threshold": 1.7634275180043113, + "feature": 1, + "leftID": 15, + "rightID": 16, + "id": 13, + "isRoot": false, + "parent": 8, + "rawValues": null, + "bakedValues": null + }, + "14": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 14, + "isRoot": false, + "parent": 8, + "rawValues": [ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, + 1.0 + ], + "bakedValues": 1 + }, + "23": { + "threshold": 2.560879061685978, + "feature": 0, + "leftID": 25, + "rightID": 26, + "id": 23, + "isRoot": false, + "parent": 21, + "rawValues": null, + "bakedValues": null + }, + "24": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 24, + "isRoot": false, + "parent": 21, + "rawValues": [ 1.0, 1.0, 1.0, 1.0, + 1.0 + ], + "bakedValues": 1 + }, + "27": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 27, + "isRoot": false, + "parent": 22, + "rawValues": [ + 0.0 + ], + "bakedValues": 0 + }, + "28": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 28, + "isRoot": false, + "parent": 22, + "rawValues": [ 1.0, 1.0, 1.0, @@ -9846,43 +9911,124 @@ ], "bakedValues": 1 }, - "33": { + "35": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 33, + "id": 35, "isRoot": false, - "parent": 31, + "parent": 33, + "rawValues": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "bakedValues": 0 + }, + "36": { + "threshold": 2.7712431392691856, + "feature": 0, + "leftID": 37, + "rightID": 38, + "id": 36, + "isRoot": false, + "parent": 33, + "rawValues": null, + "bakedValues": null + }, + "43": { + "threshold": 0.8208168896240983, + "feature": 3, + "leftID": 45, + "rightID": 46, + "id": 43, + "isRoot": false, + "parent": 41, + "rawValues": null, + "bakedValues": null + }, + "44": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 44, + "isRoot": false, + "parent": 41, + "rawValues": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "bakedValues": 0 + }, + "11": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 11, + "isRoot": false, + "parent": 10, "rawValues": [ 1.0 ], "bakedValues": 1 }, - "34": { + "12": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 34, + "id": 12, "isRoot": false, - "parent": 31, + "parent": 10, "rawValues": [ + 0.0, 0.0, 0.0 ], "bakedValues": 0 }, - "17": { + "15": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 17, + "id": 15, "isRoot": false, - "parent": 16, + "parent": 13, "rawValues": [ 0.0, + 1.0 + ], + "bakedValues": 0 + }, + "16": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 16, + "isRoot": false, + "parent": 13, + "rawValues": [ 0.0, 0.0, 0.0, @@ -9890,10 +10036,23 @@ 0.0, 0.0, 0.0, + 0.0 + ], + "bakedValues": 0 + }, + "25": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 25, + "isRoot": false, + "parent": 23, + "rawValues": [ 0.0, + 1.0, 0.0, 0.0, - 1.0, 0.0, 0.0, 0.0, @@ -9901,57 +10060,62 @@ ], "bakedValues": 0 }, - "18": { + "26": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 18, + "id": 26, "isRoot": false, - "parent": 16, + "parent": 23, "rawValues": [ 1.0 ], "bakedValues": 1 }, - "23": { + "37": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 23, + "id": 37, "isRoot": false, - "parent": 22, + "parent": 36, + "rawValues": [ + 1.0 + ], + "bakedValues": 1 + }, + "38": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 38, + "isRoot": false, + "parent": 36, + "rawValues": [ + 0.0 + ], + "bakedValues": 0 + }, + "45": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 45, + "isRoot": false, + "parent": 43, "rawValues": [ 1.0, 1.0, 1.0, + 0.0, 1.0, 1.0, 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, + 0.0, 1.0, 1.0, 1.0, @@ -9959,49 +10123,36 @@ ], "bakedValues": 1 }, - "24": { + "46": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 24, + "id": 46, "isRoot": false, - "parent": 22, + "parent": 43, "rawValues": [ 1.0, - 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, - 0.0, 1.0, 1.0, 1.0, - 0.0, 1.0, - 0.0, - 0.0, 1.0, 1.0, 1.0, - 0.0, 1.0, - 0.0, - 1.0 - ], - "bakedValues": 1 - }, - "27": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 27, - "isRoot": false, - "parent": 25, - "rawValues": [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, 1.0, 1.0, 1.0, @@ -10023,19 +10174,6 @@ 1.0 ], "bakedValues": 1 - }, - "28": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 28, - "isRoot": false, - "parent": 25, - "rawValues": [ - 0.0 - ], - "bakedValues": 0 } } }, @@ -10059,47 +10197,91 @@ } }, "nodes": { - "35": { - "threshold": 2.2822852037712784, - "feature": 2, - "leftID": 36, - "rightID": 37, - "id": 35, + "47": { + "threshold": 2.3116615475149116, + "feature": 0, + "leftID": 48, + "rightID": 49, + "id": 47, "isRoot": true, "parent": null, "rawValues": null, "bakedValues": null }, - "36": { - "threshold": 1.884580260808609, - "feature": 2, - "leftID": 38, - "rightID": 39, - "id": 36, + "48": { + "threshold": 1.73777983214488, + "feature": 0, + "leftID": 50, + "rightID": 51, + "id": 48, "isRoot": false, - "parent": 35, + "parent": 47, "rawValues": null, "bakedValues": null }, - "37": { - "threshold": 3.352672207394984, - "feature": 2, - "leftID": 46, - "rightID": 47, - "id": 37, + "49": { + "threshold": 2.812946351554872, + "feature": 0, + "leftID": 70, + "rightID": 71, + "id": 49, "isRoot": false, - "parent": 35, + "parent": 47, "rawValues": null, "bakedValues": null }, - "38": { + "50": { + "threshold": 2.31752343135389, + "feature": 3, + "leftID": 52, + "rightID": 53, + "id": 50, + "isRoot": false, + "parent": 48, + "rawValues": null, + "bakedValues": null + }, + "51": { + "threshold": 1.5278346147296147, + "feature": 1, + "leftID": 56, + "rightID": 57, + "id": 51, + "isRoot": false, + "parent": 48, + "rawValues": null, + "bakedValues": null + }, + "70": { + "threshold": 0.6374313620016259, + "feature": 1, + "leftID": 72, + "rightID": 73, + "id": 70, + "isRoot": false, + "parent": 49, + "rawValues": null, + "bakedValues": null + }, + "71": { + "threshold": 0.4230132373036468, + "feature": 1, + "leftID": 90, + "rightID": 91, + "id": 71, + "isRoot": false, + "parent": 49, + "rawValues": null, + "bakedValues": null + }, + "52": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 38, + "id": 52, "isRoot": false, - "parent": 36, + "parent": 50, "rawValues": [ 0.0, 0.0, @@ -14586,6 +14768,224 @@ 0.0, 0.0, 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "bakedValues": 0 + }, + "53": { + "threshold": 1.239784181105651, + "feature": 0, + "leftID": 54, + "rightID": 55, + "id": 53, + "isRoot": false, + "parent": 50, + "rawValues": null, + "bakedValues": null + }, + "56": { + "threshold": 1.8557410770291904, + "feature": 3, + "leftID": 58, + "rightID": 59, + "id": 56, + "isRoot": false, + "parent": 51, + "rawValues": null, + "bakedValues": null + }, + "57": { + "threshold": 0.9008231317260356, + "feature": 3, + "leftID": 62, + "rightID": 63, + "id": 57, + "isRoot": false, + "parent": 51, + "rawValues": null, + "bakedValues": null + }, + "72": { + "threshold": 1.7116606349750059, + "feature": 3, + "leftID": 74, + "rightID": 75, + "id": 72, + "isRoot": false, + "parent": 70, + "rawValues": null, + "bakedValues": null + }, + "73": { + "threshold": 0.48144441923848613, + "feature": 3, + "leftID": 78, + "rightID": 79, + "id": 73, + "isRoot": false, + "parent": 70, + "rawValues": null, + "bakedValues": null + }, + "90": { + "threshold": 3.5262385677251826, + "feature": 0, + "leftID": 92, + "rightID": 93, + "id": 90, + "isRoot": false, + "parent": 71, + "rawValues": null, + "bakedValues": null + }, + "91": { + "threshold": 1.2358257051097334, + "feature": 1, + "leftID": 98, + "rightID": 99, + "id": 91, + "isRoot": false, + "parent": 71, + "rawValues": null, + "bakedValues": null + }, + "54": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 54, + "isRoot": false, + "parent": 53, + "rawValues": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "bakedValues": 0 + }, + "55": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 55, + "isRoot": false, + "parent": 53, + "rawValues": [ + 1.0, + 1.0 + ], + "bakedValues": 1 + }, + "58": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 58, + "isRoot": false, + "parent": 56, + "rawValues": [ 0.0, 0.0, 0.0, @@ -14717,6 +15117,61 @@ 0.0, 0.0, 0.0, + 0.0 + ], + "bakedValues": 0 + }, + "59": { + "threshold": 2.035975832413464, + "feature": 0, + "leftID": 60, + "rightID": 61, + "id": 59, + "isRoot": false, + "parent": 56, + "rawValues": null, + "bakedValues": null + }, + "62": { + "threshold": 1.6364275031157494, + "feature": 1, + "leftID": 64, + "rightID": 65, + "id": 62, + "isRoot": false, + "parent": 57, + "rawValues": null, + "bakedValues": null + }, + "63": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 63, + "isRoot": false, + "parent": 57, + "rawValues": [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0 + ], + "bakedValues": 1 + }, + "74": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 74, + "isRoot": false, + "parent": 72, + "rawValues": [ 0.0, 0.0, 0.0, @@ -14746,102 +15201,58 @@ ], "bakedValues": 0 }, - "39": { - "threshold": 2.0017787045389746, - "feature": 3, - "leftID": 40, - "rightID": 41, - "id": 39, - "isRoot": false, - "parent": 36, - "rawValues": null, - "bakedValues": null - }, - "46": { - "threshold": 1.4089815796708134, - "feature": 3, - "leftID": 48, - "rightID": 49, - "id": 46, - "isRoot": false, - "parent": 37, - "rawValues": null, - "bakedValues": null - }, - "47": { - "threshold": 0.5713950572991977, - "feature": 3, - "leftID": 60, - "rightID": 61, - "id": 47, - "isRoot": false, - "parent": 37, - "rawValues": null, - "bakedValues": null - }, - "40": { - "threshold": 1.8633391043673115, - "feature": 0, - "leftID": 42, - "rightID": 43, - "id": 40, - "isRoot": false, - "parent": 39, - "rawValues": null, - "bakedValues": null - }, - "41": { - "threshold": -1.2400064974659317, + "75": { + "threshold": 2.652528304173447, "feature": 0, - "leftID": 44, - "rightID": 45, - "id": 41, + "leftID": 76, + "rightID": 77, + "id": 75, "isRoot": false, - "parent": 39, + "parent": 72, "rawValues": null, "bakedValues": null }, - "48": { - "threshold": 0.4785364988989988, + "78": { + "threshold": 2.5038112868084546, "feature": 0, - "leftID": 50, - "rightID": 51, - "id": 48, + "leftID": 80, + "rightID": 81, + "id": 78, "isRoot": false, - "parent": 46, + "parent": 73, "rawValues": null, "bakedValues": null }, - "49": { - "threshold": 2.3534922803370497, + "79": { + "threshold": 0.7027741318486269, "feature": 2, - "leftID": 56, - "rightID": 57, - "id": 49, + "leftID": 86, + "rightID": 87, + "id": 79, "isRoot": false, - "parent": 46, + "parent": 73, "rawValues": null, "bakedValues": null }, - "60": { - "threshold": 3.6493557034672657, - "feature": 2, - "leftID": 62, - "rightID": 63, - "id": 60, + "92": { + "threshold": 0.4568783509353516, + "feature": 3, + "leftID": 94, + "rightID": 95, + "id": 92, "isRoot": false, - "parent": 47, + "parent": 90, "rawValues": null, "bakedValues": null }, - "61": { + "93": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 61, + "id": 93, "isRoot": false, - "parent": 47, + "parent": 90, "rawValues": [ 1.0, 1.0, @@ -14929,70 +15340,30 @@ 1.0, 1.0, 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, + 1.0 + ], + "bakedValues": 1 + }, + "98": { + "threshold": 1.2012934510096445, + "feature": 1, + "leftID": 100, + "rightID": 101, + "id": 98, + "isRoot": false, + "parent": 91, + "rawValues": null, + "bakedValues": null + }, + "99": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 99, + "isRoot": false, + "parent": 91, + "rawValues": [ 1.0, 1.0, 1.0, @@ -19229,139 +19600,133 @@ ], "bakedValues": 1 }, - "42": { + "60": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 42, + "id": 60, "isRoot": false, - "parent": 40, + "parent": 59, "rawValues": [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, 0.0 ], "bakedValues": 0 }, - "43": { + "61": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 43, + "id": 61, "isRoot": false, - "parent": 40, + "parent": 59, "rawValues": [ - 1.0, - 1.0, - 1.0, 1.0 ], "bakedValues": 1 }, - "44": { + "64": { + "threshold": 1.5341925005772672, + "feature": 1, + "leftID": 66, + "rightID": 67, + "id": 64, + "isRoot": false, + "parent": 62, + "rawValues": null, + "bakedValues": null + }, + "65": { + "threshold": 2.1578860382665024, + "feature": 0, + "leftID": 68, + "rightID": 69, + "id": 65, + "isRoot": false, + "parent": 62, + "rawValues": null, + "bakedValues": null + }, + "76": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 44, + "id": 76, "isRoot": false, - "parent": 41, + "parent": 75, "rawValues": [ 0.0 ], "bakedValues": 0 }, - "45": { + "77": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 45, + "id": 77, "isRoot": false, - "parent": 41, + "parent": 75, "rawValues": [ + 1.0 + ], + "bakedValues": 1 + }, + "80": { + "threshold": 1.733199257054799, + "feature": 1, + "leftID": 82, + "rightID": 83, + "id": 80, + "isRoot": false, + "parent": 78, + "rawValues": null, + "bakedValues": null + }, + "81": { + "threshold": -0.9199033525168148, + "feature": 4, + "leftID": 84, + "rightID": 85, + "id": 81, + "isRoot": false, + "parent": 78, + "rawValues": null, + "bakedValues": null + }, + "86": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 86, + "isRoot": false, + "parent": 79, + "rawValues": [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, 1.0, 1.0, 1.0, @@ -19382,46 +19747,26 @@ ], "bakedValues": 1 }, - "50": { + "87": { + "threshold": 0.8250948915245566, + "feature": 2, + "leftID": 88, + "rightID": 89, + "id": 87, + "isRoot": false, + "parent": 79, + "rawValues": null, + "bakedValues": null + }, + "94": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 50, + "id": 94, "isRoot": false, - "parent": 48, + "parent": 92, "rawValues": [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, 0.0, 0.0, 0.0, @@ -19432,36 +19777,25 @@ ], "bakedValues": 0 }, - "51": { - "threshold": 2.9940810901901904, + "95": { + "threshold": 0.9858609723494979, "feature": 2, - "leftID": 52, - "rightID": 53, - "id": 51, - "isRoot": false, - "parent": 48, - "rawValues": null, - "bakedValues": null - }, - "56": { - "threshold": 0.5602630691060925, - "feature": 4, - "leftID": 58, - "rightID": 59, - "id": 56, + "leftID": 96, + "rightID": 97, + "id": 95, "isRoot": false, - "parent": 49, + "parent": 92, "rawValues": null, "bakedValues": null }, - "57": { + "100": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 57, + "id": 100, "isRoot": false, - "parent": 49, + "parent": 98, "rawValues": [ 1.0, 1.0, @@ -19670,30 +20004,34 @@ 1.0, 1.0, 1.0, - 1.0 - ], - "bakedValues": 1 - }, - "62": { - "threshold": 0.40078417241763914, - "feature": 3, - "leftID": 64, - "rightID": 65, - "id": 62, - "isRoot": false, - "parent": 60, - "rawValues": null, - "bakedValues": null - }, - "63": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 63, - "isRoot": false, - "parent": 60, - "rawValues": [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, 1.0, 1.0, 1.0, @@ -19838,66 +20176,39 @@ ], "bakedValues": 1 }, - "52": { - "threshold": 0.8679729899109101, - "feature": 4, - "leftID": 54, - "rightID": 55, - "id": 52, + "101": { + "threshold": 3.884920829284426, + "feature": 0, + "leftID": 102, + "rightID": 103, + "id": 101, "isRoot": false, - "parent": 51, + "parent": 98, "rawValues": null, "bakedValues": null }, - "53": { + "66": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 53, + "id": 66, "isRoot": false, - "parent": 51, + "parent": 64, "rawValues": [ - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0 + 0.0 ], - "bakedValues": 1 + "bakedValues": 0 }, - "58": { + "67": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 58, + "id": 67, "isRoot": false, - "parent": 56, + "parent": 64, "rawValues": [ - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, 1.0, 1.0, 1.0, @@ -19906,55 +20217,47 @@ ], "bakedValues": 1 }, - "59": { + "68": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 59, + "id": 68, "isRoot": false, - "parent": 56, + "parent": 65, "rawValues": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, 0.0 ], "bakedValues": 0 }, - "64": { - "threshold": -0.5713242694547219, - "feature": 0, - "leftID": 66, - "rightID": 67, - "id": 64, - "isRoot": false, - "parent": 62, - "rawValues": null, - "bakedValues": null - }, - "65": { + "69": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 65, + "id": 69, "isRoot": false, - "parent": 62, + "parent": 65, "rawValues": [ - 1.0, - 1.0, - 1.0, - 1.0, 1.0 ], "bakedValues": 1 }, - "54": { + "82": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 54, + "id": 82, "isRoot": false, - "parent": 52, + "parent": 80, "rawValues": [ 0.0, 0.0, @@ -19962,40 +20265,82 @@ 0.0, 0.0, 0.0, - 1.0, - 1.0, - 1.0, - 1.0, 0.0, 0.0, 0.0, 0.0, + 0.0 + ], + "bakedValues": 0 + }, + "83": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 83, + "isRoot": false, + "parent": 80, + "rawValues": [ + 0.0, + 1.0 + ], + "bakedValues": 0 + }, + "84": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 84, + "isRoot": false, + "parent": 81, + "rawValues": [ 0.0, + 0.0 + ], + "bakedValues": 0 + }, + "85": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 85, + "isRoot": false, + "parent": 81, + "rawValues": [ + 1.0, + 1.0, 1.0, 1.0, - 0.0, - 0.0, - 0.0, 1.0, 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, 1.0 ], + "bakedValues": 1 + }, + "88": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 88, + "isRoot": false, + "parent": 87, + "rawValues": [ + 0.0 + ], "bakedValues": 0 }, - "55": { + "89": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 55, + "id": 89, "isRoot": false, - "parent": 52, + "parent": 87, "rawValues": [ 1.0, 1.0, @@ -20005,39 +20350,108 @@ 1.0, 1.0, 1.0, + 0.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, 1.0, 1.0, 1.0 ], "bakedValues": 1 }, - "66": { + "96": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 66, + "id": 96, "isRoot": false, - "parent": 64, + "parent": 95, "rawValues": [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, 1.0 ], "bakedValues": 1 }, - "67": { + "97": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 67, + "id": 97, "isRoot": false, - "parent": 64, + "parent": 95, "rawValues": [ - 0.0, 0.0, 0.0 ], "bakedValues": 0 + }, + "102": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 102, + "isRoot": false, + "parent": 101, + "rawValues": [ + 0.0, + 1.0 + ], + "bakedValues": 0 + }, + "103": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 103, + "isRoot": false, + "parent": 101, + "rawValues": [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0 + ], + "bakedValues": 1 } } }, @@ -20061,91 +20475,91 @@ } }, "nodes": { - "68": { - "threshold": 2.362641262988802, - "feature": 2, - "leftID": 69, - "rightID": 70, - "id": 68, + "104": { + "threshold": 2.5965539047334727, + "feature": 0, + "leftID": 105, + "rightID": 106, + "id": 104, "isRoot": true, "parent": null, "rawValues": null, "bakedValues": null }, - "69": { - "threshold": 1.7679955001043206, - "feature": 2, - "leftID": 71, - "rightID": 72, - "id": 69, + "105": { + "threshold": 2.077313519961342, + "feature": 0, + "leftID": 107, + "rightID": 108, + "id": 105, "isRoot": false, - "parent": 68, + "parent": 104, "rawValues": null, "bakedValues": null }, - "70": { - "threshold": 2.8749657086859544, - "feature": 2, - "leftID": 91, - "rightID": 92, - "id": 70, + "106": { + "threshold": 0.5752087959212192, + "feature": 1, + "leftID": 127, + "rightID": 128, + "id": 106, "isRoot": false, - "parent": 68, + "parent": 104, "rawValues": null, "bakedValues": null }, - "71": { - "threshold": 1.6488776030944776, - "feature": 2, - "leftID": 73, - "rightID": 74, - "id": 71, + "107": { + "threshold": 1.4078382550702238, + "feature": 0, + "leftID": 109, + "rightID": 110, + "id": 107, "isRoot": false, - "parent": 69, + "parent": 105, "rawValues": null, "bakedValues": null }, - "72": { - "threshold": 1.008122288372179, - "feature": 3, - "leftID": 77, - "rightID": 78, - "id": 72, + "108": { + "threshold": 1.6093647039269339, + "feature": 1, + "leftID": 117, + "rightID": 118, + "id": 108, "isRoot": false, - "parent": 69, + "parent": 105, "rawValues": null, "bakedValues": null }, - "91": { - "threshold": 0.9323394007095793, - "feature": 3, - "leftID": 93, - "rightID": 94, - "id": 91, + "127": { + "threshold": 3.554957915865647, + "feature": 0, + "leftID": 129, + "rightID": 130, + "id": 127, "isRoot": false, - "parent": 70, + "parent": 106, "rawValues": null, "bakedValues": null }, - "92": { - "threshold": 0.36714091987987896, - "feature": 3, - "leftID": 103, - "rightID": 104, - "id": 92, + "128": { + "threshold": 1.2491737278356785, + "feature": 1, + "leftID": 139, + "rightID": 140, + "id": 128, "isRoot": false, - "parent": 70, + "parent": 106, "rawValues": null, "bakedValues": null }, - "73": { + "109": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 73, + "id": 109, "isRoot": false, - "parent": 71, + "parent": 107, "rawValues": [ 0.0, 0.0, @@ -24483,287 +24897,84 @@ 0.0, 0.0, 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, 0.0 ], "bakedValues": 0 }, - "74": { - "threshold": 3.059224995960648, - "feature": 3, - "leftID": 75, - "rightID": 76, - "id": 74, + "110": { + "threshold": 1.3986999060321632, + "feature": 1, + "leftID": 111, + "rightID": 112, + "id": 110, "isRoot": false, - "parent": 71, + "parent": 107, "rawValues": null, "bakedValues": null }, - "77": { - "threshold": 2.337580501071871, - "feature": 2, - "leftID": 79, - "rightID": 80, - "id": 77, + "117": { + "threshold": 1.4098032033814987, + "feature": 3, + "leftID": 119, + "rightID": 120, + "id": 117, "isRoot": false, - "parent": 72, + "parent": 108, "rawValues": null, "bakedValues": null }, - "78": { - "threshold": 0.4739751624679516, - "feature": 0, - "leftID": 83, - "rightID": 84, - "id": 78, + "118": { + "threshold": 0.9967738724694861, + "feature": 3, + "leftID": 121, + "rightID": 122, + "id": 118, "isRoot": false, - "parent": 72, + "parent": 108, "rawValues": null, "bakedValues": null }, - "93": { - "threshold": 1.7392927529302031, - "feature": 0, - "leftID": 95, - "rightID": 96, - "id": 93, + "129": { + "threshold": 1.4993511341692602, + "feature": 3, + "leftID": 131, + "rightID": 132, + "id": 129, "isRoot": false, - "parent": 91, + "parent": 127, "rawValues": null, "bakedValues": null }, - "94": { - "threshold": -0.8061271688388099, + "130": { + "threshold": 3.8821071009887884, "feature": 0, - "leftID": 101, - "rightID": 102, - "id": 94, + "leftID": 135, + "rightID": 136, + "id": 130, "isRoot": false, - "parent": 91, + "parent": 127, "rawValues": null, "bakedValues": null }, - "103": { - "threshold": 3.618090327810445, - "feature": 2, - "leftID": 105, - "rightID": 106, - "id": 103, + "139": { + "threshold": 3.8836397021624154, + "feature": 0, + "leftID": 141, + "rightID": 142, + "id": 139, "isRoot": false, - "parent": 92, + "parent": 128, "rawValues": null, "bakedValues": null }, - "104": { + "140": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 104, + "id": 140, "isRoot": false, - "parent": 92, + "parent": 128, "rawValues": [ 1.0, 1.0, @@ -29043,9 +29254,421 @@ 1.0, 1.0, 1.0, + 1.0 + ], + "bakedValues": 1 + }, + "111": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 111, + "isRoot": false, + "parent": 110, + "rawValues": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "bakedValues": 0 + }, + "112": { + "threshold": 1.416995646950595, + "feature": 0, + "leftID": 113, + "rightID": 114, + "id": 112, + "isRoot": false, + "parent": 110, + "rawValues": null, + "bakedValues": null + }, + "119": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 119, + "isRoot": false, + "parent": 117, + "rawValues": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "bakedValues": 0 + }, + "120": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 120, + "isRoot": false, + "parent": 117, + "rawValues": [ 1.0, 1.0, 1.0, + 1.0 + ], + "bakedValues": 1 + }, + "121": { + "threshold": 0.922869343138689, + "feature": 3, + "leftID": 123, + "rightID": 124, + "id": 121, + "isRoot": false, + "parent": 118, + "rawValues": null, + "bakedValues": null + }, + "122": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 122, + "isRoot": false, + "parent": 118, + "rawValues": [ 1.0, 1.0, 1.0, @@ -29069,6 +29692,74 @@ 1.0, 1.0, 1.0, + 1.0 + ], + "bakedValues": 1 + }, + "131": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 131, + "isRoot": false, + "parent": 129, + "rawValues": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "bakedValues": 0 + }, + "132": { + "threshold": -0.6505344907148944, + "feature": 2, + "leftID": 133, + "rightID": 134, + "id": 132, + "isRoot": false, + "parent": 129, + "rawValues": null, + "bakedValues": null + }, + "135": { + "threshold": -0.6551086703914714, + "feature": 2, + "leftID": 137, + "rightID": 138, + "id": 135, + "isRoot": false, + "parent": 130, + "rawValues": null, + "bakedValues": null + }, + "136": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 136, + "isRoot": false, + "parent": 130, + "rawValues": [ 1.0, 1.0, 1.0, @@ -29192,6 +29883,30 @@ 1.0, 1.0, 1.0, + 1.0 + ], + "bakedValues": 1 + }, + "141": { + "threshold": 3.8725746143723736, + "feature": 0, + "leftID": 143, + "rightID": 144, + "id": 141, + "isRoot": false, + "parent": 139, + "rawValues": null, + "bakedValues": null + }, + "142": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 142, + "isRoot": false, + "parent": 139, + "rawValues": [ 1.0, 1.0, 1.0, @@ -29397,298 +30112,6 @@ 1.0, 1.0, 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0 - ], - "bakedValues": 1 - }, - "75": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 75, - "isRoot": false, - "parent": 74, - "rawValues": [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - "bakedValues": 0 - }, - "76": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 76, - "isRoot": false, - "parent": 74, - "rawValues": [ - 1.0 - ], - "bakedValues": 1 - }, - "79": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 79, - "isRoot": false, - "parent": 77, - "rawValues": [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - "bakedValues": 0 - }, - "80": { - "threshold": -1.2001862237300758, - "feature": 0, - "leftID": 81, - "rightID": 82, - "id": 80, - "isRoot": false, - "parent": 77, - "rawValues": null, - "bakedValues": null - }, - "83": { - "threshold": -1.3759509949329864, - "feature": 1, - "leftID": 85, - "rightID": 86, - "id": 83, - "isRoot": false, - "parent": 78, - "rawValues": null, - "bakedValues": null - }, - "84": { - "threshold": 1.769115427772313, - "feature": 3, - "leftID": 87, - "rightID": 88, - "id": 84, - "isRoot": false, - "parent": 78, - "rawValues": null, - "bakedValues": null - }, - "95": { - "threshold": 2.7035795729333287, - "feature": 2, - "leftID": 97, - "rightID": 98, - "id": 95, - "isRoot": false, - "parent": 93, - "rawValues": null, - "bakedValues": null - }, - "96": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 96, - "isRoot": false, - "parent": 93, - "rawValues": [ - 1.0, - 1.0, - 1.0 - ], - "bakedValues": 1 - }, - "101": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 101, - "isRoot": false, - "parent": 94, - "rawValues": [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - "bakedValues": 0 - }, - "102": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 102, - "isRoot": false, - "parent": 94, - "rawValues": [ 1.0, 1.0, 1.0, @@ -29748,30 +30171,6 @@ 1.0, 1.0, 1.0, - 1.0 - ], - "bakedValues": 1 - }, - "105": { - "threshold": -0.07402044263866608, - "feature": 4, - "leftID": 107, - "rightID": 108, - "id": 105, - "isRoot": false, - "parent": 103, - "rawValues": null, - "bakedValues": null - }, - "106": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 106, - "isRoot": false, - "parent": 103, - "rawValues": [ 1.0, 1.0, 1.0, @@ -29864,103 +30263,107 @@ ], "bakedValues": 1 }, - "81": { + "113": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 81, + "id": 113, "isRoot": false, - "parent": 80, + "parent": 112, + "rawValues": [ + 1.0 + ], + "bakedValues": 1 + }, + "114": { + "threshold": 1.5766048216016075, + "feature": 1, + "leftID": 115, + "rightID": 116, + "id": 114, + "isRoot": false, + "parent": 112, + "rawValues": null, + "bakedValues": null + }, + "123": { + "threshold": 0.4478708808790638, + "feature": 3, + "leftID": 125, + "rightID": 126, + "id": 123, + "isRoot": false, + "parent": 121, + "rawValues": null, + "bakedValues": null + }, + "124": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 124, + "isRoot": false, + "parent": 121, "rawValues": [ + 0.0, 0.0 ], "bakedValues": 0 }, - "82": { + "133": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 82, + "id": 133, "isRoot": false, - "parent": 80, + "parent": 132, "rawValues": [ - 1.0 + 0.0, + 0.0 ], - "bakedValues": 1 + "bakedValues": 0 }, - "85": { + "134": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 85, + "id": 134, "isRoot": false, - "parent": 83, + "parent": 132, "rawValues": [ + 1.0, + 1.0, + 1.0, 1.0 ], "bakedValues": 1 }, - "86": { + "137": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 86, + "id": 137, "isRoot": false, - "parent": 83, + "parent": 135, "rawValues": [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, 0.0 ], "bakedValues": 0 }, - "87": { - "threshold": 1.1552208898002303, - "feature": 3, - "leftID": 89, - "rightID": 90, - "id": 87, - "isRoot": false, - "parent": 84, - "rawValues": null, - "bakedValues": null - }, - "88": { + "138": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 88, + "id": 138, "isRoot": false, - "parent": 84, + "parent": 135, "rawValues": [ - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, 1.0, 1.0, 1.0, @@ -29972,29 +30375,55 @@ ], "bakedValues": 1 }, - "97": { + "143": { + "threshold": 2.733768804712275, + "feature": 0, + "leftID": 145, + "rightID": 146, + "id": 143, + "isRoot": false, + "parent": 141, + "rawValues": null, + "bakedValues": null + }, + "144": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 97, + "id": 144, "isRoot": false, - "parent": 95, + "parent": 141, "rawValues": [ 0.0, 0.0, + 0.0 + ], + "bakedValues": 0 + }, + "115": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 115, + "isRoot": false, + "parent": 114, + "rawValues": [ 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, + 1.0 + ], + "bakedValues": 0 + }, + "116": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 116, + "isRoot": false, + "parent": 114, + "rawValues": [ 0.0, 0.0, 0.0, @@ -30018,105 +30447,40 @@ ], "bakedValues": 0 }, - "98": { - "threshold": -0.547849374540328, - "feature": 0, - "leftID": 99, - "rightID": 100, - "id": 98, - "isRoot": false, - "parent": 95, - "rawValues": null, - "bakedValues": null - }, - "107": { - "threshold": -0.5073478664129375, - "feature": 1, - "leftID": 109, - "rightID": 110, - "id": 107, - "isRoot": false, - "parent": 105, - "rawValues": null, - "bakedValues": null - }, - "108": { + "125": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 108, + "id": 125, "isRoot": false, - "parent": 105, + "parent": 123, "rawValues": [ 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - "bakedValues": 0 - }, - "89": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 89, - "isRoot": false, - "parent": 87, - "rawValues": [ 1.0, 1.0, + 0.0, 1.0, 1.0, 1.0, - 1.0 + 0.0 ], "bakedValues": 1 }, - "90": { + "126": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 90, + "id": 126, "isRoot": false, - "parent": 87, + "parent": 123, "rawValues": [ 1.0, - 0.0, - 0.0, - 0.0 - ], - "bakedValues": 0 - }, - "99": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 99, - "isRoot": false, - "parent": 98, - "rawValues": [ - 0.0 - ], - "bakedValues": 0 - }, - "100": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 100, - "isRoot": false, - "parent": 98, - "rawValues": [ + 1.0, + 1.0, + 1.0, + 1.0, 1.0, 1.0, 1.0, @@ -30124,30 +30488,80 @@ ], "bakedValues": 1 }, - "109": { + "145": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 109, + "id": 145, "isRoot": false, - "parent": 107, + "parent": 143, "rawValues": [ - 0.0, 0.0, 0.0 ], "bakedValues": 0 }, - "110": { + "146": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 110, + "id": 146, "isRoot": false, - "parent": 107, + "parent": 143, "rawValues": [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, 1.0, 1.0, 1.0, @@ -30178,91 +30592,91 @@ } }, "nodes": { - "111": { - "threshold": 2.14636764206905, - "feature": 2, - "leftID": 112, - "rightID": 113, - "id": 111, + "147": { + "threshold": 2.5131607461579235, + "feature": 0, + "leftID": 148, + "rightID": 149, + "id": 147, "isRoot": true, "parent": null, "rawValues": null, "bakedValues": null }, - "112": { - "threshold": 2.004366669259623, - "feature": 2, - "leftID": 114, - "rightID": 115, - "id": 112, + "148": { + "threshold": 1.6296714708544744, + "feature": 0, + "leftID": 150, + "rightID": 151, + "id": 148, "isRoot": false, - "parent": 111, + "parent": 147, "rawValues": null, "bakedValues": null }, - "113": { - "threshold": 2.85940003137495, - "feature": 2, - "leftID": 128, - "rightID": 129, - "id": 113, + "149": { + "threshold": 2.994782945096544, + "feature": 0, + "leftID": 172, + "rightID": 173, + "id": 149, "isRoot": false, - "parent": 111, + "parent": 147, "rawValues": null, "bakedValues": null }, - "114": { - "threshold": 1.955274648545404, + "150": { + "threshold": 2.3694085268058522, "feature": 3, - "leftID": 116, - "rightID": 117, - "id": 114, + "leftID": 152, + "rightID": 153, + "id": 150, "isRoot": false, - "parent": 112, + "parent": 148, "rawValues": null, "bakedValues": null }, - "115": { - "threshold": 1.4574907439457518, - "feature": 0, - "leftID": 122, - "rightID": 123, - "id": 115, + "151": { + "threshold": 1.5137805567443692, + "feature": 1, + "leftID": 158, + "rightID": 159, + "id": 151, "isRoot": false, - "parent": 112, + "parent": 148, "rawValues": null, "bakedValues": null }, - "128": { - "threshold": 0.9231771203793099, - "feature": 3, - "leftID": 130, - "rightID": 131, - "id": 128, + "172": { + "threshold": 1.095883287963075, + "feature": 1, + "leftID": 174, + "rightID": 175, + "id": 172, "isRoot": false, - "parent": 113, + "parent": 149, "rawValues": null, "bakedValues": null }, - "129": { - "threshold": 3.65574773002645, - "feature": 2, - "leftID": 146, - "rightID": 147, - "id": 129, + "173": { + "threshold": 3.89435979526525, + "feature": 0, + "leftID": 180, + "rightID": 181, + "id": 173, "isRoot": false, - "parent": 113, + "parent": 149, "rawValues": null, "bakedValues": null }, - "116": { + "152": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 116, + "id": 152, "isRoot": false, - "parent": 114, + "parent": 150, "rawValues": [ 0.0, 0.0, @@ -34702,186 +35116,62 @@ 0.0, 0.0, 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, 0.0 ], "bakedValues": 0 }, - "117": { - "threshold": 1.6737880178561217, - "feature": 2, - "leftID": 118, - "rightID": 119, - "id": 117, + "153": { + "threshold": 1.2102172848588484, + "feature": 0, + "leftID": 154, + "rightID": 155, + "id": 153, "isRoot": false, - "parent": 114, + "parent": 150, "rawValues": null, "bakedValues": null }, - "122": { - "threshold": 2.1311086307262257, + "158": { + "threshold": 1.4600374102936458, "feature": 3, - "leftID": 124, - "rightID": 125, - "id": 122, + "leftID": 160, + "rightID": 161, + "id": 158, "isRoot": false, - "parent": 115, + "parent": 151, "rawValues": null, "bakedValues": null }, - "123": { - "threshold": -1.235455992816779, + "159": { + "threshold": -0.4007231755138489, "feature": 3, - "leftID": 126, - "rightID": 127, - "id": 123, - "isRoot": false, - "parent": 115, - "rawValues": null, - "bakedValues": null - }, - "130": { - "threshold": 1.7853819968614388, - "feature": 0, - "leftID": 132, - "rightID": 133, - "id": 130, - "isRoot": false, - "parent": 128, - "rawValues": null, - "bakedValues": null - }, - "131": { - "threshold": -0.7642162020691566, - "feature": 0, - "leftID": 138, - "rightID": 139, - "id": 131, + "leftID": 166, + "rightID": 167, + "id": 159, "isRoot": false, - "parent": 128, + "parent": 151, "rawValues": null, "bakedValues": null }, - "146": { - "threshold": 0.42933461393397415, - "feature": 3, - "leftID": 148, - "rightID": 149, - "id": 146, + "174": { + "threshold": 0.4410975855162125, + "feature": 1, + "leftID": 176, + "rightID": 177, + "id": 174, "isRoot": false, - "parent": 129, + "parent": 172, "rawValues": null, "bakedValues": null }, - "147": { + "175": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 147, + "id": 175, "isRoot": false, - "parent": 129, + "parent": 172, "rawValues": [ 1.0, 1.0, @@ -34936,6 +35226,56 @@ 1.0, 1.0, 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0 + ], + "bakedValues": 1 + }, + "180": { + "threshold": 1.24289872822241, + "feature": 1, + "leftID": 182, + "rightID": 183, + "id": 180, + "isRoot": false, + "parent": 173, + "rawValues": null, + "bakedValues": null + }, + "181": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 181, + "isRoot": false, + "parent": 173, + "rawValues": [ 1.0, 1.0, 1.0, @@ -39214,14 +39554,14 @@ ], "bakedValues": 1 }, - "118": { + "154": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 118, + "id": 154, "isRoot": false, - "parent": 117, + "parent": 153, "rawValues": [ 0.0, 0.0, @@ -39253,6 +39593,41 @@ 0.0, 0.0, 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "bakedValues": 0 + }, + "155": { + "threshold": 1.4114294501220392, + "feature": 0, + "leftID": 156, + "rightID": 157, + "id": 155, + "isRoot": false, + "parent": 153, + "rawValues": null, + "bakedValues": null + }, + "160": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 160, + "isRoot": false, + "parent": 158, + "rawValues": [ 0.0, 0.0, 0.0, @@ -39371,30 +39746,6 @@ 0.0, 0.0, 0.0, - 0.0 - ], - "bakedValues": 0 - }, - "119": { - "threshold": -0.9437671920329869, - "feature": 1, - "leftID": 120, - "rightID": 121, - "id": 119, - "isRoot": false, - "parent": 117, - "rawValues": null, - "bakedValues": null - }, - "124": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 124, - "isRoot": false, - "parent": 122, - "rawValues": [ 0.0, 0.0, 0.0, @@ -39434,171 +39785,10 @@ 0.0, 0.0, 0.0, - 0.0 - ], - "bakedValues": 0 - }, - "125": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 125, - "isRoot": false, - "parent": 122, - "rawValues": [ - 1.0, - 1.0 - ], - "bakedValues": 1 - }, - "126": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 126, - "isRoot": false, - "parent": 123, - "rawValues": [ - 0.0 - ], - "bakedValues": 0 - }, - "127": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 127, - "isRoot": false, - "parent": 123, - "rawValues": [ - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0 - ], - "bakedValues": 1 - }, - "132": { - "threshold": 0.2069584793824024, - "feature": 4, - "leftID": 134, - "rightID": 135, - "id": 132, - "isRoot": false, - "parent": 130, - "rawValues": null, - "bakedValues": null - }, - "133": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 133, - "isRoot": false, - "parent": 130, - "rawValues": [ - 1.0, - 1.0, - 1.0 - ], - "bakedValues": 1 - }, - "138": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 138, - "isRoot": false, - "parent": 131, - "rawValues": [ 0.0, 0.0, 0.0, - 0.0 - ], - "bakedValues": 0 - }, - "139": { - "threshold": 1.4084907453750886, - "feature": 3, - "leftID": 140, - "rightID": 141, - "id": 139, - "isRoot": false, - "parent": 131, - "rawValues": null, - "bakedValues": null - }, - "148": { - "threshold": -0.0688136070820867, - "feature": 4, - "leftID": 150, - "rightID": 151, - "id": 148, - "isRoot": false, - "parent": 146, - "rawValues": null, - "bakedValues": null - }, - "149": { - "threshold": 2.8728058957642815, - "feature": 2, - "leftID": 152, - "rightID": 153, - "id": 149, - "isRoot": false, - "parent": 146, - "rawValues": null, - "bakedValues": null - }, - "120": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 120, - "isRoot": false, - "parent": 119, - "rawValues": [ - 1.0, - 1.0 - ], - "bakedValues": 1 - }, - "121": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 121, - "isRoot": false, - "parent": 119, - "rawValues": [ 0.0, - 0.0 - ], - "bakedValues": 0 - }, - "134": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 134, - "isRoot": false, - "parent": 132, - "rawValues": [ 0.0, 0.0, 0.0, @@ -39644,66 +39834,63 @@ ], "bakedValues": 0 }, - "135": { - "threshold": -0.21168140481407824, - "feature": 1, - "leftID": 136, - "rightID": 137, - "id": 135, - "isRoot": false, - "parent": 132, - "rawValues": null, - "bakedValues": null - }, - "140": { - "threshold": 1.3833211722225887, + "161": { + "threshold": 2.22967244524125, "feature": 3, - "leftID": 142, - "rightID": 143, - "id": 140, - "isRoot": false, - "parent": 139, - "rawValues": null, - "bakedValues": null - }, - "141": { - "threshold": 0.5602630691060925, - "feature": 4, - "leftID": 144, - "rightID": 145, - "id": 141, + "leftID": 162, + "rightID": 163, + "id": 161, "isRoot": false, - "parent": 139, + "parent": 158, "rawValues": null, "bakedValues": null }, - "150": { + "166": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 150, + "id": 166, "isRoot": false, - "parent": 148, + "parent": 159, "rawValues": [ - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0 + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 ], - "bakedValues": 1 + "bakedValues": 0 }, - "151": { + "167": { + "threshold": 0.495241249867183, + "feature": 3, + "leftID": 168, + "rightID": 169, + "id": 167, + "isRoot": false, + "parent": 159, + "rawValues": null, + "bakedValues": null + }, + "176": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 151, + "id": 176, "isRoot": false, - "parent": 148, + "parent": 174, "rawValues": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, 0.0, 0.0, 0.0, @@ -39717,25 +39904,36 @@ ], "bakedValues": 0 }, - "152": { - "threshold": 0.907472216613509, - "feature": 0, - "leftID": 154, - "rightID": 155, - "id": 152, + "177": { + "threshold": 0.6723045111045577, + "feature": 2, + "leftID": 178, + "rightID": 179, + "id": 177, "isRoot": false, - "parent": 149, + "parent": 174, "rawValues": null, "bakedValues": null }, - "153": { + "182": { + "threshold": 0.8074646255791155, + "feature": 3, + "leftID": 184, + "rightID": 185, + "id": 182, + "isRoot": false, + "parent": 180, + "rawValues": null, + "bakedValues": null + }, + "183": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 153, + "id": 183, "isRoot": false, - "parent": 149, + "parent": 180, "rawValues": [ 1.0, 1.0, @@ -40054,6 +40252,182 @@ 1.0, 1.0, 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0 + ], + "bakedValues": 1 + }, + "156": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 156, + "isRoot": false, + "parent": 155, + "rawValues": [ + 1.0, + 1.0, + 1.0 + ], + "bakedValues": 1 + }, + "157": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 157, + "isRoot": false, + "parent": 155, + "rawValues": [ + 0.0, + 0.0 + ], + "bakedValues": 0 + }, + "162": { + "threshold": 2.3802821934048626, + "feature": 0, + "leftID": 164, + "rightID": 165, + "id": 162, + "isRoot": false, + "parent": 161, + "rawValues": null, + "bakedValues": null + }, + "163": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 163, + "isRoot": false, + "parent": 161, + "rawValues": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "bakedValues": 1 + }, + "168": { + "threshold": 0.2778888229082801, + "feature": 3, + "leftID": 170, + "rightID": 171, + "id": 168, + "isRoot": false, + "parent": 167, + "rawValues": null, + "bakedValues": null + }, + "169": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 169, + "isRoot": false, + "parent": 167, + "rawValues": [ 1.0, 1.0, 1.0, @@ -40081,31 +40455,69 @@ ], "bakedValues": 1 }, - "136": { + "178": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 136, + "id": 178, "isRoot": false, - "parent": 135, + "parent": 177, "rawValues": [ 1.0, 1.0, + 1.0, + 1.0 + ], + "bakedValues": 1 + }, + "179": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 179, + "isRoot": false, + "parent": 177, + "rawValues": [ + 0.0, + 0.0, 0.0, 0.0, 0.0 ], "bakedValues": 0 }, - "137": { + "184": { + "threshold": 0.6043028243972002, + "feature": 3, + "leftID": 186, + "rightID": 187, + "id": 184, + "isRoot": false, + "parent": 182, + "rawValues": null, + "bakedValues": null + }, + "185": { + "threshold": 3.8449383828260886, + "feature": 0, + "leftID": 188, + "rightID": 189, + "id": 185, + "isRoot": false, + "parent": 182, + "rawValues": null, + "bakedValues": null + }, + "164": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 137, + "id": 164, "isRoot": false, - "parent": 135, + "parent": 162, "rawValues": [ 0.0, 0.0, @@ -40115,24 +40527,33 @@ 0.0, 0.0, 0.0, - 0.0, - 0.0, - 0.0, 0.0 ], "bakedValues": 0 }, - "142": { + "165": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 142, + "id": 165, "isRoot": false, - "parent": 140, + "parent": 162, "rawValues": [ 1.0, - 1.0, + 1.0 + ], + "bakedValues": 1 + }, + "170": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 170, + "isRoot": false, + "parent": 168, + "rawValues": [ 1.0, 1.0, 1.0, @@ -40145,51 +40566,66 @@ ], "bakedValues": 1 }, - "143": { + "171": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 143, + "id": 171, "isRoot": false, - "parent": 140, + "parent": 168, "rawValues": [ + 0.0, 0.0, 0.0, 0.0 ], "bakedValues": 0 }, - "144": { + "186": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 144, + "id": 186, "isRoot": false, - "parent": 141, + "parent": 184, "rawValues": [ + 0.0, + 0.0, 1.0, 1.0, 1.0, 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, + 1.0 + ], + "bakedValues": 1 + }, + "187": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 187, + "isRoot": false, + "parent": 184, + "rawValues": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "bakedValues": 0 + }, + "188": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 188, + "isRoot": false, + "parent": 185, + "rawValues": [ 1.0, 1.0, 1.0, @@ -40235,66 +40671,21 @@ ], "bakedValues": 1 }, - "145": { + "189": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 145, + "id": 189, "isRoot": false, - "parent": 141, + "parent": 185, "rawValues": [ - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, 0.0, 1.0, - 1.0, - 1.0 - ], - "bakedValues": 1 - }, - "154": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 154, - "isRoot": false, - "parent": 152, - "rawValues": [ 0.0, - 0.0 - ], - "bakedValues": 0 - }, - "155": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 155, - "isRoot": false, - "parent": 152, - "rawValues": [ - 1.0, - 1.0, 1.0 ], - "bakedValues": 1 + "bakedValues": 0 } } }, @@ -40318,91 +40709,91 @@ } }, "nodes": { - "156": { - "threshold": 2.5030489324249348, - "feature": 2, - "leftID": 157, - "rightID": 158, - "id": 156, + "190": { + "threshold": 2.43079124302234, + "feature": 0, + "leftID": 191, + "rightID": 192, + "id": 190, "isRoot": true, "parent": null, "rawValues": null, "bakedValues": null }, - "157": { - "threshold": 2.0490539246535553, - "feature": 2, - "leftID": 159, - "rightID": 160, - "id": 157, + "191": { + "threshold": 1.7323831459839927, + "feature": 0, + "leftID": 193, + "rightID": 194, + "id": 191, "isRoot": false, - "parent": 156, + "parent": 190, "rawValues": null, "bakedValues": null }, - "158": { - "threshold": 3.023657892195086, - "feature": 2, - "leftID": 179, - "rightID": 180, - "id": 158, + "192": { + "threshold": 2.9871970664027567, + "feature": 0, + "leftID": 213, + "rightID": 214, + "id": 192, "isRoot": false, - "parent": 156, + "parent": 190, "rawValues": null, "bakedValues": null }, - "159": { - "threshold": 2.478433625737821, - "feature": 3, - "leftID": 161, - "rightID": 162, - "id": 159, + "193": { + "threshold": 2.240529932428645, + "feature": 1, + "leftID": 195, + "rightID": 196, + "id": 193, "isRoot": false, - "parent": 157, + "parent": 191, "rawValues": null, "bakedValues": null }, - "160": { - "threshold": 1.6065694037666485, - "feature": 3, - "leftID": 165, - "rightID": 166, - "id": 160, + "194": { + "threshold": 1.972768719636874, + "feature": 1, + "leftID": 201, + "rightID": 202, + "id": 194, "isRoot": false, - "parent": 157, + "parent": 191, "rawValues": null, "bakedValues": null }, - "179": { - "threshold": 1.4080187034845195, - "feature": 3, - "leftID": 181, - "rightID": 182, - "id": 179, + "213": { + "threshold": 1.2119954492539835, + "feature": 1, + "leftID": 215, + "rightID": 216, + "id": 213, "isRoot": false, - "parent": 158, + "parent": 192, "rawValues": null, "bakedValues": null }, - "180": { - "threshold": 0.5275116861138802, - "feature": 3, - "leftID": 193, - "rightID": 194, - "id": 180, + "214": { + "threshold": 1.2293146136442727, + "feature": 1, + "leftID": 225, + "rightID": 226, + "id": 214, "isRoot": false, - "parent": 158, + "parent": 192, "rawValues": null, "bakedValues": null }, - "161": { + "195": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 161, + "id": 195, "isRoot": false, - "parent": 159, + "parent": 193, "rawValues": [ 0.0, 0.0, @@ -44991,89 +45382,84 @@ 0.0, 0.0, 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, 0.0 ], "bakedValues": 0 }, - "162": { - "threshold": 1.30445711014649, - "feature": 2, - "leftID": 163, - "rightID": 164, - "id": 162, + "196": { + "threshold": 2.0006647548602796, + "feature": 3, + "leftID": 197, + "rightID": 198, + "id": 196, "isRoot": false, - "parent": 159, + "parent": 193, "rawValues": null, "bakedValues": null }, - "165": { - "threshold": 1.1198011155849363, - "feature": 0, - "leftID": 167, - "rightID": 168, - "id": 165, + "201": { + "threshold": 2.58564133080278, + "feature": 3, + "leftID": 203, + "rightID": 204, + "id": 201, "isRoot": false, - "parent": 160, + "parent": 194, "rawValues": null, "bakedValues": null }, - "166": { - "threshold": 0.6187171810482177, - "feature": 4, - "leftID": 175, - "rightID": 176, - "id": 166, + "202": { + "threshold": 0.340576866107335, + "feature": 3, + "leftID": 209, + "rightID": 210, + "id": 202, "isRoot": false, - "parent": 160, + "parent": 194, "rawValues": null, "bakedValues": null }, - "181": { - "threshold": 0.518146690074298, - "feature": 0, - "leftID": 183, - "rightID": 184, - "id": 181, + "215": { + "threshold": 0.22745346586085174, + "feature": 1, + "leftID": 217, + "rightID": 218, + "id": 215, "isRoot": false, - "parent": 179, + "parent": 213, "rawValues": null, "bakedValues": null }, - "182": { - "threshold": 2.0041167966103566, - "feature": 1, - "leftID": 191, - "rightID": 192, - "id": 182, + "216": { + "threshold": 2.50512952854934, + "feature": 0, + "leftID": 221, + "rightID": 222, + "id": 216, "isRoot": false, - "parent": 179, + "parent": 213, "rawValues": null, "bakedValues": null }, - "193": { - "threshold": 3.631095660577642, - "feature": 2, - "leftID": 195, - "rightID": 196, - "id": 193, + "225": { + "threshold": 3.892539240248398, + "feature": 0, + "leftID": 227, + "rightID": 228, + "id": 225, "isRoot": false, - "parent": 180, + "parent": 214, "rawValues": null, "bakedValues": null }, - "194": { + "226": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 194, + "id": 226, "isRoot": false, - "parent": 180, + "parent": 214, "rawValues": [ 1.0, 1.0, @@ -49254,10 +49640,130 @@ 1.0, 1.0, 1.0, + 1.0 + ], + "bakedValues": 1 + }, + "197": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 197, + "isRoot": false, + "parent": 196, + "rawValues": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "bakedValues": 0 + }, + "198": { + "threshold": 2.608276277393924, + "feature": 1, + "leftID": 199, + "rightID": 200, + "id": 198, + "isRoot": false, + "parent": 196, + "rawValues": null, + "bakedValues": null + }, + "203": { + "threshold": 1.4489665050859166, + "feature": 1, + "leftID": 205, + "rightID": 206, + "id": 203, + "isRoot": false, + "parent": 201, + "rawValues": null, + "bakedValues": null + }, + "204": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 204, + "isRoot": false, + "parent": 201, + "rawValues": [ 1.0, 1.0, 1.0, 1.0, + 1.0 + ], + "bakedValues": 1 + }, + "209": { + "threshold": 1.0734590466246177, + "feature": 4, + "leftID": 211, + "rightID": 212, + "id": 209, + "isRoot": false, + "parent": 202, + "rawValues": null, + "bakedValues": null + }, + "210": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 210, + "isRoot": false, + "parent": 202, + "rawValues": [ 1.0, 1.0, 1.0, @@ -49276,6 +49782,69 @@ 1.0, 1.0, 1.0, + 1.0 + ], + "bakedValues": 1 + }, + "217": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 217, + "isRoot": false, + "parent": 215, + "rawValues": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "bakedValues": 0 + }, + "218": { + "threshold": 0.3048724909308635, + "feature": 3, + "leftID": 219, + "rightID": 220, + "id": 218, + "isRoot": false, + "parent": 215, + "rawValues": null, + "bakedValues": null + }, + "221": { + "threshold": 0.3353774741348645, + "feature": 3, + "leftID": 223, + "rightID": 224, + "id": 221, + "isRoot": false, + "parent": 216, + "rawValues": null, + "bakedValues": null + }, + "222": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 222, + "isRoot": false, + "parent": 216, + "rawValues": [ 1.0, 1.0, 1.0, @@ -49347,6 +49916,30 @@ 1.0, 1.0, 1.0, + 1.0 + ], + "bakedValues": 1 + }, + "227": { + "threshold": 0.8074646255791155, + "feature": 3, + "leftID": 229, + "rightID": 230, + "id": 227, + "isRoot": false, + "parent": 225, + "rawValues": null, + "bakedValues": null + }, + "228": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 228, + "isRoot": false, + "parent": 225, + "rawValues": [ 1.0, 1.0, 1.0, @@ -49663,345 +50256,6 @@ 1.0, 1.0, 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0 - ], - "bakedValues": 1 - }, - "163": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 163, - "isRoot": false, - "parent": 162, - "rawValues": [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - "bakedValues": 0 - }, - "164": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 164, - "isRoot": false, - "parent": 162, - "rawValues": [ - 1.0, - 1.0, - 1.0 - ], - "bakedValues": 1 - }, - "167": { - "threshold": 0.9231771203793099, - "feature": 3, - "leftID": 169, - "rightID": 170, - "id": 167, - "isRoot": false, - "parent": 165, - "rawValues": null, - "bakedValues": null - }, - "168": { - "threshold": -0.4583254765147883, - "feature": 4, - "leftID": 173, - "rightID": 174, - "id": 168, - "isRoot": false, - "parent": 165, - "rawValues": null, - "bakedValues": null - }, - "175": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 175, - "isRoot": false, - "parent": 166, - "rawValues": [ - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0 - ], - "bakedValues": 1 - }, - "176": { - "threshold": 2.5976057434631463, - "feature": 3, - "leftID": 177, - "rightID": 178, - "id": 176, - "isRoot": false, - "parent": 166, - "rawValues": null, - "bakedValues": null - }, - "183": { - "threshold": -1.3015174556529072, - "feature": 1, - "leftID": 185, - "rightID": 186, - "id": 183, - "isRoot": false, - "parent": 181, - "rawValues": null, - "bakedValues": null - }, - "184": { - "threshold": 0.9373225999517716, - "feature": 0, - "leftID": 187, - "rightID": 188, - "id": 184, - "isRoot": false, - "parent": 181, - "rawValues": null, - "bakedValues": null - }, - "191": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 191, - "isRoot": false, - "parent": 182, - "rawValues": [ - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0 - ], - "bakedValues": 1 - }, - "192": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 192, - "isRoot": false, - "parent": 182, - "rawValues": [ - 0.0 - ], - "bakedValues": 0 - }, - "195": { - "threshold": 0.15427230572334855, - "feature": 4, - "leftID": 197, - "rightID": 198, - "id": 195, - "isRoot": false, - "parent": 193, - "rawValues": null, - "bakedValues": null - }, - "196": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 196, - "isRoot": false, - "parent": 193, - "rawValues": [ 1.0, 1.0, 1.0, @@ -50098,15 +50352,156 @@ ], "bakedValues": 1 }, - "169": { + "199": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 169, + "id": 199, "isRoot": false, - "parent": 167, + "parent": 198, + "rawValues": [ + 1.0 + ], + "bakedValues": 1 + }, + "200": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 200, + "isRoot": false, + "parent": 198, "rawValues": [ + 0.0 + ], + "bakedValues": 0 + }, + "205": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 205, + "isRoot": false, + "parent": 203, + "rawValues": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, 0.0, 0.0, 0.0, @@ -50161,41 +50556,42 @@ ], "bakedValues": 0 }, - "170": { - "threshold": 2.302610372719878, - "feature": 2, - "leftID": 171, - "rightID": 172, - "id": 170, + "206": { + "threshold": 0.4582618451468678, + "feature": 4, + "leftID": 207, + "rightID": 208, + "id": 206, "isRoot": false, - "parent": 167, + "parent": 203, "rawValues": null, "bakedValues": null }, - "173": { + "211": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 173, + "id": 211, "isRoot": false, - "parent": 168, + "parent": 209, "rawValues": [ 0.0, 0.0, 0.0, + 0.0, 0.0 ], "bakedValues": 0 }, - "174": { + "212": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 174, + "id": 212, "isRoot": false, - "parent": 168, + "parent": 209, "rawValues": [ 1.0, 1.0, @@ -50205,15 +50601,19 @@ ], "bakedValues": 1 }, - "177": { + "219": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 177, + "id": 219, "isRoot": false, - "parent": 176, + "parent": 218, "rawValues": [ + 0.0, + 0.0, + 0.0, + 0.0, 0.0, 0.0, 0.0, @@ -50221,139 +50621,99 @@ ], "bakedValues": 0 }, - "178": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 178, - "isRoot": false, - "parent": 176, - "rawValues": [ - 1.0 - ], - "bakedValues": 1 - }, - "185": { + "220": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 185, + "id": 220, "isRoot": false, - "parent": 183, + "parent": 218, "rawValues": [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, 1.0 ], "bakedValues": 1 }, - "186": { + "223": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 186, + "id": 223, "isRoot": false, - "parent": 183, + "parent": 221, "rawValues": [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, 0.0, 0.0 ], "bakedValues": 0 }, - "187": { - "threshold": 0.6686514845173887, - "feature": 0, - "leftID": 189, - "rightID": 190, - "id": 187, - "isRoot": false, - "parent": 184, - "rawValues": null, - "bakedValues": null - }, - "188": { + "224": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 188, + "id": 224, "isRoot": false, - "parent": 184, + "parent": 221, "rawValues": [ - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, 1.0, 1.0 ], "bakedValues": 1 }, - "197": { + "229": { + "threshold": 0.43866709978824464, + "feature": 2, + "leftID": 231, + "rightID": 232, + "id": 229, + "isRoot": false, + "parent": 227, + "rawValues": null, + "bakedValues": null + }, + "230": { + "threshold": 3.817696510532093, + "feature": 0, + "leftID": 233, + "rightID": 234, + "id": 230, + "isRoot": false, + "parent": 227, + "rawValues": null, + "bakedValues": null + }, + "207": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 197, + "id": 207, "isRoot": false, - "parent": 195, + "parent": 206, "rawValues": [ 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, + 0.0, 1.0, 1.0 ], "bakedValues": 1 }, - "198": { - "threshold": 3.066764897426065, - "feature": 2, - "leftID": 199, - "rightID": 200, - "id": 198, - "isRoot": false, - "parent": 195, - "rawValues": null, - "bakedValues": null - }, - "171": { + "208": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 171, + "id": 208, "isRoot": false, - "parent": 170, + "parent": 206, "rawValues": [ 0.0, 0.0, @@ -50362,77 +50722,108 @@ 0.0, 0.0, 0.0, + 0.0, + 0.0, 0.0 ], "bakedValues": 0 }, - "172": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 172, - "isRoot": false, - "parent": 170, - "rawValues": [ - 1.0 - ], - "bakedValues": 1 - }, - "189": { + "231": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 189, + "id": 231, "isRoot": false, - "parent": 187, + "parent": 229, "rawValues": [ 1.0, 1.0, + 1.0, + 0.0, + 1.0, 1.0 ], "bakedValues": 1 }, - "190": { + "232": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 190, + "id": 232, "isRoot": false, - "parent": 187, + "parent": 229, "rawValues": [ + 0.0, + 0.0, 0.0, 0.0 ], "bakedValues": 0 }, - "199": { + "233": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 199, + "id": 233, "isRoot": false, - "parent": 198, + "parent": 230, "rawValues": [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, 1.0 ], "bakedValues": 1 }, - "200": { + "234": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 200, + "id": 234, "isRoot": false, - "parent": 198, + "parent": 230, "rawValues": [ 0.0, - 0.0, - 0.0 + 1.0 ], "bakedValues": 0 } diff --git a/machineLearning/rf/leafFunction.py b/machineLearning/rf/leafFunction.py index 18ab3ff..cbf5a30 100644 --- a/machineLearning/rf/leafFunction.py +++ b/machineLearning/rf/leafFunction.py @@ -144,6 +144,8 @@ class AnomalyDetection(LeafFunction): def _leafFunc(self, node: Node) -> np.ndarray: # Use self.strategy to access the corresponding attribute from the node # Assuming 'level' is an attribute of the node indicating its depth or similar + assert isinstance(node, Node), "input type needs to be of Node" + if hasattr(node, self.strategy): return np.array([getattr(node, self.strategy)]) else: diff --git a/som-test.json b/som-test.json index 36adcf6..9178d86 100644 --- a/som-test.json +++ b/som-test.json @@ -1,5 +1,5 @@ { - "datetime": "2024-03-05T14:12:22.428111", + "datetime": "2024-03-07T11:43:10.483832", "qualifiedName": [ "machineLearning.som.som", "SOM" @@ -16,1258 +16,1234 @@ "counts": [ [ [ - 182.0, - 0.0 - ], - [ - 117.0, - 0.0 + 0.0, + 126.0 ], [ - 274.0, - 0.0 + 0.0, + 39.0 ], [ - 73.0, - 0.0 + 0.0, + 234.0 ], [ - 26.0, - 0.0 + 0.0, + 111.0 ], [ - 180.0, - 0.0 + 0.0, + 115.0 ], [ - 161.0, - 0.0 + 0.0, + 30.0 ], [ - 111.0, - 0.0 + 0.0, + 189.0 ], [ - 47.0, - 0.0 + 0.0, + 184.0 ], [ - 253.0, - 0.0 + 0.0, + 39.0 ], [ - 95.0, - 0.0 + 0.0, + 182.0 ], [ - 16.0, - 5.0 + 0.0, + 30.0 ], [ - 1.0, - 33.0 + 0.0, + 155.0 ], [ 0.0, - 67.0 + 137.0 ], [ 0.0, - 182.0 + 149.0 ], [ - 266.0, - 0.0 + 0.0, + 165.0 ], [ - 127.0, - 0.0 + 0.0, + 211.0 ], [ - 245.0, - 0.0 + 0.0, + 108.0 ], [ - 227.0, - 0.0 + 0.0, + 99.0 ], [ - 263.0, - 0.0 + 0.0, + 15.0 ], [ - 236.0, - 0.0 + 1.0, + 57.0 ], [ - 189.0, - 0.0 + 0.0, + 178.0 ], [ - 64.0, - 0.0 + 0.0, + 231.0 ], [ - 17.0, - 0.0 + 0.0, + 24.0 ], [ - 91.0, - 0.0 + 0.0, + 34.0 ], [ - 12.0, - 0.0 + 0.0, + 124.0 ], [ - 16.0, - 2.0 + 0.0, + 31.0 ], [ 0.0, - 31.0 + 22.0 ], [ 0.0, - 162.0 + 29.0 ], [ 0.0, - 250.0 + 167.0 ], [ - 49.0, - 0.0 + 0.0, + 58.0 ], [ - 169.0, - 0.0 + 0.0, + 24.0 ], [ - 36.0, - 0.0 + 0.0, + 28.0 ], [ - 51.0, - 0.0 + 0.0, + 6.0 ], [ - 60.0, - 0.0 + 0.0, + 17.0 ], [ - 69.0, - 0.0 + 0.0, + 25.0 ], [ - 162.0, - 0.0 + 0.0, + 17.0 ], [ - 28.0, - 0.0 + 0.0, + 11.0 ], [ - 9.0, - 0.0 + 0.0, + 22.0 ], [ - 11.0, - 0.0 + 0.0, + 9.0 ], [ - 6.0, - 0.0 + 0.0, + 174.0 ], [ - 3.0, - 5.0 + 0.0, + 114.0 ], [ 0.0, - 84.0 + 67.0 ], [ 0.0, - 74.0 + 151.0 ], [ 0.0, - 177.0 + 60.0 ], [ - 12.0, - 0.0 + 0.0, + 150.0 ], [ - 59.0, - 0.0 + 0.0, + 230.0 ], [ - 32.0, - 0.0 + 0.0, + 139.0 ], [ - 52.0, - 0.0 + 0.0, + 12.0 ], [ - 123.0, - 0.0 + 0.0, + 19.0 ], [ - 17.0, - 0.0 + 0.0, + 4.0 ], [ - 137.0, - 0.0 + 0.0, + 6.0 ], [ - 143.0, - 0.0 + 0.0, + 8.0 ], [ - 49.0, - 0.0 + 0.0, + 187.0 ], [ - 27.0, - 0.0 + 0.0, + 73.0 ], [ - 4.0, - 0.0 + 0.0, + 178.0 ], [ 0.0, - 3.0 + 62.0 ], [ 0.0, - 11.0 + 15.0 ], [ 0.0, - 33.0 + 23.0 ], [ 0.0, - 55.0 + 26.0 ], [ - 3.0, - 5.0 + 0.0, + 54.0 ], [ - 2.0, - 13.0 + 0.0, + 248.0 ], [ - 3.0, - 0.0 + 0.0, + 7.0 ], [ - 75.0, - 0.0 + 0.0, + 84.0 ], [ - 14.0, - 0.0 + 0.0, + 32.0 ], [ - 4.0, - 0.0 + 0.0, + 50.0 ], [ - 38.0, - 0.0 + 0.0, + 24.0 ], [ - 158.0, - 0.0 + 0.0, + 82.0 ], [ - 9.0, - 3.0 + 0.0, + 42.0 ], [ - 4.0, - 19.0 + 0.0, + 72.0 ], [ - 109.0, - 0.0 + 0.0, + 155.0 ], [ - 5.0, - 1.0 + 0.0, + 159.0 ], [ - 1.0, - 68.0 + 0.0, + 191.0 ], [ 0.0, - 145.0 + 11.0 ], [ 0.0, - 29.0 + 46.0 ], [ 0.0, - 68.0 + 64.0 ], [ 0.0, - 228.0 + 54.0 ], [ - 1.0, - 23.0 + 0.0, + 87.0 ], [ - 1.0, - 16.0 + 0.0, + 190.0 ], [ - 3.0, - 22.0 + 0.0, + 9.0 ], [ - 7.0, - 0.0 + 0.0, + 157.0 ], [ - 4.0, - 0.0 + 0.0, + 77.0 ], [ - 111.0, - 0.0 + 0.0, + 174.0 ], [ - 41.0, - 0.0 + 0.0, + 19.0 ], [ - 87.0, - 0.0 + 0.0, + 26.0 ], [ - 41.0, - 0.0 + 0.0, + 34.0 ], [ - 24.0, - 0.0 + 0.0, + 21.0 ], [ 0.0, - 9.0 + 28.0 ], [ 0.0, - 16.0 + 98.0 ], [ - 2.0, - 8.0 + 0.0, + 89.0 ], [ 0.0, - 108.0 + 29.0 ], [ 0.0, - 37.0 + 17.0 ], [ 0.0, - 140.0 + 151.0 ], [ 0.0, - 118.0 + 177.0 ], [ - 6.0, - 12.0 - ], - [ - 23.0, - 0.0 + 1.0, + 51.0 ], [ - 128.0, - 0.0 + 0.0, + 33.0 ], [ - 110.0, - 0.0 + 0.0, + 49.0 ], [ - 214.0, - 0.0 + 14.0, + 27.0 ], [ - 21.0, - 0.0 + 0.0, + 59.0 ], [ - 13.0, - 0.0 + 0.0, + 124.0 ], [ - 29.0, - 1.0 + 0.0, + 169.0 ], [ 0.0, - 46.0 + 162.0 ], [ - 1.0, - 6.0 + 0.0, + 61.0 ], [ 0.0, - 22.0 + 35.0 ], [ 0.0, - 135.0 + 45.0 ], [ - 0.0, - 312.0 + 2.0, + 8.0 ], [ 0.0, - 54.0 + 52.0 ], [ 0.0, - 254.0 + 96.0 ], [ 0.0, - 5.0 + 152.0 ], [ 0.0, - 0.0 + 79.0 ], [ - 5.0, - 0.0 + 3.0, + 19.0 ], [ - 280.0, - 0.0 + 35.0, + 2.0 ], [ - 60.0, - 0.0 + 13.0, + 2.0 ], [ - 273.0, - 0.0 + 5.0, + 3.0 ], [ - 61.0, - 0.0 + 9.0, + 15.0 ], [ - 8.0, - 0.0 + 2.0, + 51.0 ], [ - 6.0, - 0.0 + 3.0, + 29.0 ], [ 1.0, - 4.0 + 38.0 ], [ - 0.0, - 27.0 + 1.0, + 10.0 ], [ 0.0, - 400.0 + 10.0 ], [ - 0.0, - 242.0 + 1.0, + 7.0 ], [ 0.0, - 238.0 + 84.0 ], [ - 4.0, - 9.0 + 0.0, + 126.0 ], [ - 9.0, - 3.0 + 8.0, + 14.0 ], [ - 5.0, - 0.0 + 11.0, + 4.0 ], [ - 95.0, + 6.0, 0.0 ], [ - 57.0, + 143.0, 0.0 ], [ - 314.0, - 0.0 + 167.0, + 1.0 ], [ - 33.0, + 26.0, 0.0 ], [ - 83.0, - 1.0 + 20.0, + 8.0 ], [ - 0.0, - 20.0 + 25.0, + 0.0 ], [ 0.0, - 93.0 + 11.0 ], [ - 0.0, - 95.0 + 24.0, + 3.0 ], [ - 0.0, - 243.0 + 2.0, + 1.0 ], [ - 0.0, - 374.0 + 3.0, + 6.0 ], [ - 0.0, - 72.0 + 7.0, + 0.0 ], [ - 0.0, - 47.0 + 2.0, + 50.0 ], [ - 0.0, - 58.0 + 1.0, + 3.0 ], [ - 0.0, - 62.0 + 61.0, + 1.0 ], [ 6.0, - 0.0 + 4.0 ], [ - 180.0, + 15.0, 0.0 ], [ - 255.0, + 19.0, 0.0 ], [ - 120.0, + 25.0, 0.0 ], [ - 46.0, + 66.0, 0.0 ], [ - 26.0, + 142.0, 0.0 ], [ - 0.0, - 16.0 + 17.0, + 2.0 ], [ - 0.0, - 98.0 + 32.0, + 3.0 ], [ - 0.0, - 34.0 + 133.0, + 0.0 ], [ - 0.0, - 211.0 + 39.0, + 0.0 ], [ - 0.0, - 278.0 + 22.0, + 0.0 ], [ - 0.0, - 208.0 + 157.0, + 0.0 ], [ - 0.0, - 143.0 + 26.0, + 0.0 ], [ - 0.0, - 48.0 + 150.0, + 0.0 ], [ - 8.0, - 3.0 + 48.0, + 0.0 ], [ - 10.0, + 121.0, 0.0 ], [ - 222.0, + 91.0, 0.0 ], [ - 153.0, + 128.0, 0.0 ], [ - 204.0, + 241.0, 0.0 ], [ - 13.0, + 35.0, 0.0 ], [ - 0.0, - 27.0 + 43.0, + 0.0 ], [ - 0.0, - 131.0 + 28.0, + 0.0 ], [ - 0.0, - 254.0 + 38.0, + 0.0 ], [ - 0.0, - 27.0 + 181.0, + 0.0 ], [ - 0.0, - 276.0 + 24.0, + 0.0 ], [ - 0.0, - 125.0 + 31.0, + 0.0 ], [ - 0.0, - 55.0 + 134.0, + 0.0 ], [ - 0.0, - 38.0 + 9.0, + 0.0 ], [ - 1.0, - 8.0 + 50.0, + 0.0 ], [ - 6.0, - 2.0 + 27.0, + 0.0 ], [ - 54.0, + 16.0, 0.0 ], [ - 45.0, + 24.0, 0.0 ], [ - 21.0, + 40.0, 0.0 ], [ - 60.0, + 118.0, 0.0 ], [ - 5.0, + 26.0, 0.0 ], [ - 2.0, - 5.0 + 163.0, + 0.0 ], [ - 0.0, - 69.0 + 16.0, + 0.0 ], [ - 0.0, - 40.0 + 31.0, + 0.0 ], [ - 0.0, - 53.0 + 14.0, + 0.0 ], [ - 0.0, - 250.0 + 61.0, + 0.0 ], [ - 0.0, - 32.0 + 84.0, + 0.0 ], [ - 0.0, - 8.0 + 194.0, + 0.0 ], [ - 0.0, + 49.0, 0.0 ], [ - 2.0, + 49.0, 0.0 ], [ - 7.0, + 38.0, 0.0 ], [ - 1.0, + 232.0, 0.0 ], [ - 76.0, + 223.0, 0.0 ], [ - 144.0, + 232.0, 0.0 ], [ - 2.0, + 112.0, 0.0 ], [ - 0.0, - 19.0 + 207.0, + 0.0 ], [ - 0.0, - 42.0 + 14.0, + 0.0 ], [ - 0.0, - 86.0 + 91.0, + 2.0 ], [ - 0.0, - 181.0 + 53.0, + 0.0 ], [ - 0.0, - 294.0 + 222.0, + 0.0 ], [ - 0.0, - 107.0 - ], - [ - 8.0, - 3.0 - ], - [ - 15.0, + 75.0, 0.0 ], [ - 1.0, + 61.0, 0.0 ], [ - 3.0, + 152.0, 0.0 ], [ - 1.0, + 249.0, 0.0 ], [ - 9.0, + 249.0, 0.0 ], [ - 226.0, + 229.0, 0.0 ], [ - 36.0, + 116.0, 0.0 ], [ - 1.0, - 7.0 - ], - [ - 1.0, - 32.0 - ], - [ - 0.0, - 52.0 - ], - [ - 0.0, - 252.0 - ], - [ - 0.0, - 45.0 - ], - [ - 0.0, - 20.0 - ], - [ - 0.0, - 32.0 + 129.0, + 0.0 ], [ - 113.0, + 14.0, 0.0 ], [ - 144.0, + 83.0, 0.0 ], [ - 115.0, + 170.0, 0.0 ], [ - 14.0, + 45.0, 0.0 ], [ - 35.0, + 87.0, 0.0 ], [ - 20.0, - 1.0 + 11.0, + 0.0 ], [ - 6.0, - 1.0 + 234.0, + 0.0 ], [ - 0.0, - 62.0 + 74.0, + 0.0 ], [ - 0.0, - 11.0 + 208.0, + 0.0 ], [ - 0.0, - 20.0 + 223.0, + 0.0 ], [ - 0.0, - 37.0 + 195.0, + 0.0 ], [ - 0.0, - 310.0 + 224.0, + 0.0 ], [ - 0.0, - 94.0 + 148.0, + 0.0 ], [ - 0.0, - 210.0 + 156.0, + 0.0 ], [ - 0.0, - 158.0 - ] - ], - [ - [ - 50.0, + 149.0, 0.0 ], [ - 39.0, + 182.0, 0.0 ], [ - 88.0, + 26.0, 0.0 ], [ - 32.0, + 136.0, 0.0 ], [ - 11.0, + 42.0, 0.0 ], [ - 68.0, - 0.0 + 182.0, + 1.0 ], [ - 62.0, + 183.0, 0.0 ], [ - 38.0, + 134.0, 0.0 ], [ - 14.0, + 207.0, 0.0 ], [ - 81.0, + 83.0, 0.0 ], [ - 26.0, + 160.0, 0.0 - ], + ] + ], + [ [ - 2.0, - 4.0 + 0.0, + 53.0 ], [ 0.0, - 13.0 + 18.0 ], [ 0.0, - 22.0 + 76.0 ], [ 0.0, - 59.0 + 36.0 ], [ - 96.0, - 0.0 + 0.0, + 31.0 ], [ - 51.0, - 0.0 + 0.0, + 5.0 ], [ - 64.0, - 0.0 + 0.0, + 61.0 ], [ - 80.0, - 0.0 + 0.0, + 59.0 ], [ - 89.0, - 0.0 + 0.0, + 10.0 ], [ - 75.0, - 0.0 + 0.0, + 46.0 ], [ - 54.0, - 0.0 + 0.0, + 12.0 ], [ - 15.0, - 0.0 + 0.0, + 58.0 ], [ - 8.0, - 0.0 + 0.0, + 47.0 ], [ - 27.0, - 0.0 + 0.0, + 59.0 ], [ - 6.0, - 0.0 + 0.0, + 52.0 ], [ - 1.0, - 0.0 + 0.0, + 64.0 ], [ 0.0, - 12.0 + 33.0 ], [ 0.0, - 57.0 + 28.0 ], [ 0.0, - 79.0 + 12.0 ], [ - 11.0, - 0.0 + 0.0, + 19.0 ], [ - 53.0, - 0.0 + 0.0, + 50.0 ], [ - 10.0, - 0.0 + 0.0, + 65.0 ], [ - 19.0, - 0.0 + 0.0, + 5.0 ], [ - 20.0, - 0.0 + 0.0, + 8.0 ], [ - 22.0, - 0.0 + 0.0, + 39.0 ], [ - 70.0, - 0.0 + 0.0, + 10.0 ], [ - 5.0, - 0.0 + 0.0, + 3.0 ], [ - 7.0, - 0.0 + 0.0, + 7.0 ], [ - 4.0, - 0.0 + 0.0, + 56.0 ], [ - 6.0, - 0.0 + 0.0, + 20.0 ], [ - 1.0, - 2.0 + 0.0, + 14.0 ], [ 0.0, - 32.0 + 10.0 ], [ 0.0, - 27.0 + 1.0 ], [ 0.0, - 54.0 + 3.0 ], [ - 2.0, - 0.0 + 0.0, + 9.0 ], [ - 14.0, - 0.0 + 0.0, + 5.0 ], [ - 12.0, - 0.0 + 0.0, + 8.0 ], [ - 19.0, - 0.0 + 0.0, + 9.0 ], [ - 44.0, - 0.0 + 0.0, + 2.0 ], [ - 7.0, - 0.0 + 0.0, + 48.0 ], [ - 47.0, - 0.0 + 0.0, + 40.0 ], [ - 34.0, - 0.0 + 0.0, + 23.0 ], [ - 21.0, - 0.0 + 0.0, + 44.0 ], [ - 11.0, - 0.0 + 0.0, + 19.0 ], [ - 3.0, - 0.0 + 0.0, + 46.0 ], [ 0.0, - 1.0 + 81.0 ], [ 0.0, - 5.0 + 58.0 ], [ 0.0, - 11.0 + 3.0 ], [ 0.0, - 14.0 + 6.0 ], [ - 2.0, - 0.0 + 0.0, + 2.0 ], [ 0.0, 5.0 ], [ - 2.0, - 0.0 + 0.0, + 7.0 ], [ - 21.0, - 0.0 + 0.0, + 63.0 ], [ 0.0, - 0.0 + 19.0 ], [ 0.0, - 0.0 + 52.0 ], [ - 10.0, - 0.0 + 0.0, + 22.0 ], [ - 63.0, - 0.0 + 0.0, + 4.0 ], [ - 2.0, - 0.0 + 0.0, + 5.0 ], [ - 2.0, + 0.0, + 10.0 + ], + [ + 0.0, + 19.0 + ], + [ + 0.0, + 83.0 + ], + [ + 0.0, 2.0 ], [ - 43.0, - 0.0 + 0.0, + 29.0 ], [ - 1.0, - 0.0 + 0.0, + 11.0 ], [ 0.0, - 16.0 + 20.0 ], [ 0.0, - 54.0 + 13.0 ], [ 0.0, - 9.0 + 29.0 ], [ 0.0, - 16.0 + 18.0 ], [ 0.0, - 64.0 + 22.0 ], [ 0.0, - 10.0 + 61.0 ], [ 0.0, - 10.0 + 55.0 ], [ - 1.0, + 0.0, + 57.0 + ], + [ + 0.0, 4.0 ], [ 0.0, - 0.0 + 17.0 ], [ 0.0, - 0.0 + 25.0 ], [ - 32.0, - 0.0 + 0.0, + 19.0 ], [ - 11.0, - 0.0 + 0.0, + 27.0 ], [ - 19.0, - 0.0 + 0.0, + 71.0 ], [ - 11.0, - 1.0 + 0.0, + 2.0 ], [ - 5.0, - 0.0 + 0.0, + 63.0 ], [ 0.0, - 1.0 + 36.0 + ], + [ + 0.0, + 52.0 ], [ 0.0, @@ -1275,226 +1251,246 @@ ], [ 0.0, - 3.0 + 16.0 ], [ 0.0, - 31.0 + 6.0 ], [ 0.0, - 12.0 + 10.0 ], [ 0.0, - 47.0 + 13.0 ], [ 0.0, - 45.0 + 26.0 ], [ - 3.0, - 2.0 + 0.0, + 40.0 ], [ - 10.0, - 0.0 + 0.0, + 12.0 ], [ - 35.0, - 0.0 + 0.0, + 8.0 ], [ - 44.0, - 0.0 + 0.0, + 56.0 ], [ - 67.0, - 0.0 + 0.0, + 59.0 ], [ - 3.0, - 0.0 + 0.0, + 13.0 ], [ - 5.0, - 0.0 + 0.0, + 16.0 ], [ - 12.0, - 0.0 + 0.0, + 22.0 ], [ - 1.0, - 15.0 + 2.0, + 7.0 ], [ 0.0, - 7.0 + 21.0 ], [ - 1.0, - 9.0 + 0.0, + 40.0 ], [ 0.0, - 56.0 + 40.0 ], [ 0.0, - 109.0 + 53.0 ], [ 0.0, - 26.0 + 29.0 ], [ 0.0, - 61.0 + 2.0 ], [ 0.0, + 19.0 + ], + [ + 1.0, 3.0 ], [ 0.0, - 0.0 + 12.0 ], [ 0.0, - 0.0 + 41.0 ], [ - 97.0, - 0.0 + 0.0, + 52.0 ], [ - 21.0, - 0.0 + 0.0, + 30.0 ], [ - 78.0, - 0.0 + 2.0, + 8.0 ], [ - 16.0, + 9.0, 0.0 ], [ - 3.0, + 2.0, 0.0 ], [ - 3.0, - 0.0 + 0.0, + 1.0 ], [ 0.0, - 1.0 + 6.0 ], [ 0.0, - 7.0 + 15.0 ], [ 0.0, - 127.0 + 8.0 ], [ 0.0, - 88.0 + 13.0 ], [ 0.0, - 57.0 + 8.0 + ], + [ + 0.0, + 1.0 ], [ 3.0, - 7.0 + 0.0 ], [ - 6.0, - 2.0 + 0.0, + 20.0 ], [ 0.0, - 0.0 + 45.0 ], [ - 46.0, + 2.0, + 5.0 + ], + [ + 6.0, 0.0 ], [ - 19.0, + 2.0, 0.0 ], [ - 88.0, + 54.0, 0.0 ], [ - 16.0, + 59.0, 0.0 ], [ - 27.0, + 7.0, 0.0 ], [ - 0.0, + 2.0, 4.0 ], [ - 0.0, - 40.0 + 8.0, + 0.0 ], [ 0.0, - 46.0 + 3.0 ], [ - 0.0, - 97.0 + 8.0, + 0.0 ], [ - 0.0, - 97.0 + 2.0, + 1.0 ], [ - 0.0, - 23.0 + 4.0, + 0.0 ], [ - 0.0, - 15.0 + 1.0, + 0.0 ], [ - 0.0, - 17.0 + 1.0, + 11.0 ], [ - 0.0, - 28.0 + 3.0, + 1.0 ], [ - 8.0, + 22.0, + 1.0 + ], + [ + 5.0, + 2.0 + ], + [ + 10.0, 0.0 ], [ - 59.0, + 4.0, 0.0 ], [ - 87.0, + 9.0, 0.0 ], [ - 55.0, + 18.0, 0.0 ], [ - 13.0, + 56.0, 0.0 ], [ @@ -1502,320 +1498,324 @@ 0.0 ], [ - 0.0, - 8.0 + 8.0, + 1.0 ], [ - 0.0, - 37.0 + 46.0, + 0.0 ], [ - 0.0, - 14.0 + 19.0, + 0.0 ], [ - 0.0, - 82.0 + 12.0, + 0.0 ], [ - 0.0, - 84.0 + 47.0, + 0.0 ], [ - 0.0, - 76.0 + 10.0, + 0.0 ], [ - 0.0, - 44.0 + 43.0, + 0.0 ], [ - 0.0, - 14.0 + 20.0, + 1.0 ], [ - 5.0, + 47.0, 0.0 ], [ - 2.0, + 37.0, 0.0 ], [ - 75.0, + 50.0, 0.0 ], [ - 65.0, + 82.0, 0.0 ], [ - 56.0, + 13.0, 0.0 ], [ - 7.0, + 12.0, 0.0 ], [ - 1.0, - 9.0 + 10.0, + 0.0 ], [ - 0.0, - 51.0 + 17.0, + 0.0 ], [ - 0.0, - 97.0 + 55.0, + 0.0 ], [ - 0.0, - 4.0 + 17.0, + 0.0 ], [ - 0.0, - 114.0 + 7.0, + 0.0 ], [ - 0.0, - 41.0 + 39.0, + 0.0 ], [ - 0.0, - 16.0 + 2.0, + 0.0 ], [ - 0.0, - 11.0 + 13.0, + 0.0 ], [ - 0.0, - 3.0 + 8.0, + 0.0 ], [ - 3.0, + 4.0, 0.0 ], [ - 20.0, + 6.0, 0.0 ], [ - 19.0, + 15.0, 0.0 ], [ - 8.0, + 31.0, 0.0 ], [ - 17.0, + 11.0, 0.0 ], [ - 2.0, + 32.0, 0.0 ], [ - 0.0, - 2.0 + 5.0, + 0.0 ], [ - 0.0, - 28.0 + 10.0, + 0.0 ], [ - 0.0, - 15.0 + 4.0, + 0.0 ], [ - 0.0, - 17.0 + 16.0, + 0.0 ], [ - 0.0, - 83.0 + 22.0, + 0.0 ], [ - 0.0, - 10.0 + 65.0, + 0.0 ], [ - 0.0, - 2.0 + 15.0, + 0.0 ], [ - 2.0, + 16.0, 0.0 ], [ - 2.0, + 11.0, 0.0 ], [ - 1.0, - 1.0 + 69.0, + 0.0 ], [ - 2.0, + 68.0, 0.0 ], [ - 35.0, + 66.0, 0.0 ], [ - 50.0, + 38.0, 0.0 ], [ - 2.0, + 72.0, 0.0 ], [ - 0.0, - 4.0 + 6.0, + 0.0 ], [ - 0.0, - 19.0 + 32.0, + 0.0 ], [ - 0.0, - 27.0 + 19.0, + 0.0 ], [ - 0.0, - 59.0 + 72.0, + 0.0 ], [ - 0.0, - 60.0 + 24.0, + 0.0 ], [ - 0.0, - 37.0 + 19.0, + 0.0 ], [ - 1.0, - 1.0 + 46.0, + 0.0 ], [ - 7.0, + 75.0, 0.0 ], [ - 2.0, + 83.0, 0.0 ], [ - 4.0, + 80.0, 0.0 ], [ - 1.0, + 32.0, 0.0 ], [ - 1.0, + 51.0, 0.0 ], [ - 79.0, + 5.0, 0.0 ], [ - 17.0, + 30.0, 0.0 ], [ - 2.0, - 4.0 + 60.0, + 0.0 ], [ - 0.0, - 11.0 + 6.0, + 0.0 ], [ - 0.0, - 24.0 + 36.0, + 0.0 ], [ - 0.0, - 93.0 + 6.0, + 0.0 ], [ - 0.0, - 17.0 + 75.0, + 0.0 ], [ - 0.0, - 10.0 + 19.0, + 0.0 ], [ - 0.0, - 16.0 + 71.0, + 0.0 ], [ - 32.0, + 68.0, 0.0 ], [ - 48.0, + 72.0, 0.0 ], [ - 25.0, + 92.0, 0.0 ], [ - 3.0, + 59.0, 0.0 ], [ - 14.0, + 49.0, 0.0 ], [ - 10.0, + 55.0, 0.0 ], [ - 1.0, + 68.0, 0.0 ], [ - 0.0, - 19.0 + 8.0, + 0.0 ], [ - 0.0, - 5.0 + 48.0, + 0.0 ], [ - 0.0, - 9.0 + 10.0, + 0.0 ], [ - 0.0, - 13.0 + 66.0, + 0.0 ], [ - 0.0, - 103.0 + 68.0, + 0.0 ], [ - 0.0, - 35.0 + 49.0, + 0.0 ], [ - 0.0, - 63.0 + 59.0, + 0.0 ], [ - 0.0, - 38.0 + 27.0, + 0.0 + ], + [ + 54.0, + 0.0 ] ] ], @@ -1824,3383 +1824,3383 @@ "scale": 2, "weights": [ [ - 1.1732578349148701, - -0.47060533666939824, - 0.008448965650495783, - -0.8537096808851411, - -0.30016625726493174 + 2.23473986621624, + 2.9544808355612453, + 3.983565458869683, + 0.035834454108907246, + -0.03473380399450993 ], [ - 0.5576525413487503, - -0.5518237790589406, - -0.15123551266362706, - -0.2694934775745702, - 0.342630988422263 + 1.7148096638627177, + 2.3743771721276192, + 3.782767365295453, + 0.07310285162338172, + -0.1396786912836548 ], [ - 0.2624237313607221, - -1.3194426417898666, - 0.3516541314650004, - -0.8089763038502611, - -0.08030140269166662 + 2.037251213486472, + 1.1400492623596907, + 5.288920926014232, + -0.10258701400643089, + 0.4440041826594746 ], [ - 0.4096895981367918, - -0.34114794478118554, - -0.5440857474595712, - -0.2577070750224866, - -0.1689309038651159 + 2.2857886253479736, + 2.8504046632547526, + 4.3681317276229805, + 0.11211658289497131, + 0.4415218228907206 ], [ - 0.497233866104634, - 0.11912143527039144, - -0.3323771366023037, - 0.2064214487116759, - -0.46227254434192044 + 1.46476902357409, + 2.6468030135638836, + 3.9485425293865566, + 0.9792564028572369, + 0.7104381257535191 ], [ - 0.14544666461282232, - -0.027978583599538857, - 0.08418715352734425, - 0.4224097457737893, - -0.6055676902505748 + 1.5438874594837104, + 2.3439513847984363, + 4.493992141807962, + 0.61451778626762, + -0.21562299055557108 ], [ - -0.10009701723785756, - 0.8133299812359379, - 0.12113365726513486, - -0.19706552603085348, - -1.0596162937142168 + 2.593727640630036, + 2.328535658751922, + 4.821096628169057, + 0.23878664346643438, + 0.9071072147742318 ], [ - 0.16380658110811813, - 0.9290853444623071, - -0.38282727269049127, - -0.008197666290697282, - -0.9989502342634589 + 1.3095096734175047, + 2.3416500925580994, + 5.595977174791131, + 0.9154623442030848, + 1.0521594079823962 ], [ - 0.3363306707204582, - 0.776038210503871, - 0.08037035765854066, - -0.22428544045041643, - -0.4780378360429313 + 1.3120768062569523, + 2.5975097641566767, + 4.499843905827563, + 0.005702683820729548, + 0.5993888578022547 ], [ - -0.16480292920723885, - 0.15360612643202334, - 0.5455117996866301, - -0.8024832161278651, - -1.2507520261849931 + 1.604812125254641, + 3.908856502666771, + 4.872117659690801, + -0.5083106702284056, + -0.023913690351558117 ], [ - 0.9978664012368453, - 1.2008152314002223, - 0.6808397045115703, - -0.22220283614597108, - -0.7548969213095804 + 1.634021146377622, + 3.0510677028389686, + 4.779844525032382, + -0.4358108532385266, + -0.1751811179885608 ], [ - 1.6395907539394383, - 2.474660187508352, - 0.055918333174277815, - -1.0457750502060597, - 0.12918781105374844 + 1.7922395171066674, + 3.5289362713805024, + 4.380612145697693, + -0.07673332572501762, + -0.8771315166159575 ], [ - 2.309137344271611, - 3.1299090217475842, - 0.48626388549869504, - -0.9236701333943048, - 0.8540435195313062 + 2.0310485625942336, + 2.963463742307739, + 4.827168563161306, + -1.1994228017809843, + -0.8838616593960447 ], [ - 2.871879638299907, - 3.687247083231679, - 0.21182902396653117, - -0.9514262185881254, - 1.0466562698604638 + 1.8052126464222649, + 1.9973988409703567, + 5.263249355352872, + -0.914167165385069, + -1.298594556127099 ], [ - 3.329260730888526, - 4.355081954450787, - 0.16094122686253182, - -1.582497909237708, - 1.191809858603109 + 2.6204468539909263, + 2.0220035241709775, + 4.457689916710268, + -0.7952285036813288, + -0.7234426305729799 ], [ - 0.6321046511677348, - -1.0074277646488636, - -0.5882935685125997, - 0.6339685826924921, - 0.15413086117244396 + 2.5433143634952775, + 3.143007968081302, + 5.715840067280024, + -0.17954910922961018, + -0.3319988469096957 ], [ - 0.43086760432884924, - -0.408141439369259, - -0.10409446488549715, - -0.592539691840075, - 0.3209606707090706 + 1.78191555334457, + 2.1781180649911978, + 5.5149352058391985, + -0.056424004928997504, + -0.03980994229096017 ], [ - 0.39395908123079343, - -0.9601692921879751, - -0.6299859048430688, - -0.8018864659186556, - 0.5752180389141435 + 1.1205385323987918, + 1.9857020261189258, + 5.177866155090597, + 0.3571524415680586, + -0.056126998979503226 ], [ - 0.1489462227762211, - -0.9900688864555075, - -0.6090135152903023, - -0.6259078961968283, - -0.5317540236187575 + 1.6982977302144944, + 2.287461528342195, + 4.909850667954826, + 0.5670901399339578, + 0.10353962478215363 ], [ - 0.4878081452338735, - -0.779473085798204, - 0.11350407063166901, - 0.16194551610176477, - -0.9111883376526717 + 1.997399575630751, + 2.359592621592793, + 4.015808738456931, + 0.697928743367157, + 0.30977242044645315 ], [ - -0.06756278139095621, - -0.3942060211620476, - -0.8847002232059633, - 0.31755716298291686, - -1.0867867302469112 + 2.7356904633843153, + 3.0504330541172076, + 4.868386380828159, + 0.732622379448492, + -0.24401500033243503 ], [ - 0.004607376401877148, - -0.12687889945029046, - -0.4517108378885961, - 0.5212395727298516, - -0.4421993579120427 + 2.025159329578536, + 2.4225606788969265, + 5.637699723914405, + 0.6689227482831566, + -0.728034813769212 ], [ - 0.06544709093291616, - 0.5508839145123512, - -0.5356366710435404, - 0.29513875933138006, - -0.48625998673564946 + 1.6510571077767058, + 2.7062717311271665, + 5.348457511816851, + 0.15399661527985234, + 0.023744648197636328 ], [ - 0.21382210286658257, - 0.932154918500183, - -0.3407023162619878, - 0.11951474568223884, - -0.15102773041404144 + 1.7504230430280552, + 2.9787122018103354, + 5.036053932845298, + 0.21612445584413464, + 0.29847780568121207 ], [ - 0.08845391002257945, - 1.2641213131434148, - -0.38775071644069514, - -0.5993402459664863, - -0.010015855209650794 + 1.513380681093367, + 2.787926888224793, + 4.936029354054783, + -0.36516159670772763, + 1.1379622552034003 ], [ - 0.635506127752034, - 2.0106562743632703, - -0.031071746080564015, - 0.0124093341788919, - -0.1216566663975266 + 1.3005450857384815, + 2.9334579089036925, + 5.152466700413693, + -0.3007864007123204, + 0.2478825468110731 ], [ - 1.5606079355785303, - 2.1333318290169765, - 0.10895394275223551, - -0.6484428008791514, - 0.24869815953189453 + 1.4904562932156866, + 3.043146569565465, + 4.593942706312585, + -0.17922129103053128, + -0.08337247329986719 ], [ - 2.577486199054167, - 3.038750581148523, - 0.4022430768889106, - -0.4504205568882365, - 0.6316260474031209 + 1.4745266576777074, + 2.847868829931599, + 4.526693283726363, + -0.47488130262723655, + -0.34313159584301994 ], [ - 2.984164495246661, - 4.173319617593968, - 0.7732384496825864, - -0.7084951244005095, - 0.6660850737077002 + 1.7234390866752802, + 2.8322737324435203, + 5.197922098574505, + -0.3602646681622477, + -1.509655677185909 ], [ - 3.733761565699034, - 4.5306345360986064, - 0.2269080530786704, - -0.7619053541917287, - 1.522358433699499 + 1.7156109429332367, + 2.4733739542882796, + 4.552186738439927, + -0.6072421154319648, + -1.047595949649652 ], [ - 0.9155551610466802, - 0.3829334282793474, - -0.18270779951439053, - -0.18980637376967496, - 0.49440695955401703 + 1.884398339638248, + 2.729394559275338, + 5.24089043736621, + -0.09483430445729886, + -0.10581064020295089 ], [ - 0.5701683752787465, - 0.030616849089441, - -0.6891893160606969, - -0.9989089184937264, - -0.023614778116900093 + 1.3614677845934855, + 2.5337193706876993, + 5.172535397736463, + 0.4398744473330833, + -0.1349064866414009 ], [ - 0.7367880608333058, - 0.021169509214308033, - -0.38395426507249186, - -0.4014990544511489, - 0.12632789809068554 + 1.3587973966796005, + 2.4477945646651595, + 4.59754520848413, + 0.36389953031009925, + 0.181391134417392 ], [ - 0.7115250336958163, - -0.054128611815632645, - -0.19197360361350113, - -0.26438398871488583, - -0.2192233620479025 + 1.5391597595957194, + 2.4637930430459067, + 4.375855814248317, + 0.3764631916797675, + 0.3744998715849046 ], [ - 0.7770210920590621, - -0.08829145409866374, - -0.36999596180694116, - 0.22145942176990333, - -0.21207052409830984 + 1.2943741572662844, + 2.4562459817264455, + 4.070028180847585, + 0.3387521522182828, + 0.13742607189780776 ], [ - 0.5550855102736972, - 0.3670311446310992, - -0.476966191727396, - 0.07727116801784828, - -0.8094516233619776 + 1.877948258595218, + 2.594199382958222, + 4.952179945561271, + 0.04864509087514585, + -0.07348609460835775 ], [ - -0.10932201120003647, - 0.3421747916551511, - -1.4940506616953724, - 0.11054139628779641, - 0.22884456719751775 + 1.3418473507654831, + 2.870243312494303, + 4.434539897008618, + -0.17413515199020568, + 0.17582154061635033 ], [ - 0.39646502146312534, - 1.0609675451571212, - -0.36520167470448917, - 0.44710011975562547, - 0.11528864395307689 + 1.4673288033229337, + 2.9286572915326063, + 4.881440752456573, + -0.1051291227327653, + 0.5380672025561997 ], [ - 0.8020869251773802, - 1.272744885160665, - -0.4283882817744316, - -0.10434278415816717, - 0.18161114703316739 + 1.72768029648255, + 2.648253561823327, + 4.628102017837892, + -0.11707354366024247, + 0.18492072174351112 ], [ - 0.5883029721842001, - 1.8754347754385319, - -0.5517085997500211, - 0.13586925777386746, - -0.008775363910240249 + 1.9333317274349373, + 3.4962451591429278, + 5.208904516882506, + 0.20969277850871734, + 1.0780496547681229 ], [ - 1.376440843965087, - 1.6012134906491995, - -0.08633243839707937, - -0.009987163805240621, - 0.759584483599887 + 1.4953547340792075, + 3.3591641478665633, + 4.415445933222013, + -0.4577525829235155, + 0.5188953221238441 ], [ - 2.159676986276354, - 2.2746951644396693, - 0.10382818554232019, - -0.026381119800530616, - 0.6093004803057479 + 1.9606652177911577, + 2.493665970900262, + 5.086701612043379, + -0.4818170981889551, + -0.14026265136138474 ], [ - 3.1317022264930037, - 3.3687994730587496, - 0.4396045696257068, - -0.29184605439242634, - 1.374485080314238 + 0.9602830965097235, + 3.2435191514576447, + 4.828606516724121, + -0.26029638281614065, + -1.082429928921387 ], [ - 3.0659775036995653, - 4.168013990776885, - 0.10223719670865968, - -0.24024629117958393, - 1.0895916087532989 + 1.305367761835881, + 2.162868185691265, + 4.532576526766006, + -0.7689777466751303, + -0.6551483431136055 ], [ - 3.6216771238782535, - 4.093445452889323, - -0.09871319997182763, - -0.23319010697047293, - 1.2541037324791364 + 1.10792488489074, + 2.0737373319890477, + 4.665949892847462, + -0.037125599592012636, + -1.5394580099676516 ], [ - 1.0751691038257296, - 1.5776020475265058, - -0.7958773039666152, - -0.1800852284135013, - 0.8213775366797883 + 1.6140395979259072, + 2.241527841236995, + 6.55139316144284, + -0.2636259543179854, + 0.4109680211414309 ], [ - 1.0549201524699123, - 0.5427275319238021, - -0.7837298524364261, - -0.16579521222813087, - 0.5505055077029499 + 1.9403189264581555, + 2.5376714560669216, + 5.970880133291851, + 0.2569845943573785, + 0.4649652804702241 ], [ - 1.478920575625277, - 0.9981363753573734, - -0.5160589083877541, - -0.4690128669845929, - 0.7037017288753643 + 1.641856780055143, + 2.686435924552867, + 5.129981150122511, + 0.4285072986225491, + 0.1926688356662235 ], [ - 1.0806565319300738, - 1.0761495017857488, - -0.4883538265039609, - -0.5513189566571981, - -0.07659271192032122 + 1.337435369712294, + 2.6266472980591895, + 5.249101245795168, + 0.3819535984445752, + 0.22882811393112962 ], [ - 1.4764252757098912, - 0.05098264666816942, - -0.9028670671890444, - 0.32616090073023796, - -0.4860848402545194 + 1.4913988744442452, + 2.411781214071682, + 4.432839070830271, + 0.166015589066495, + 0.04065760072407402 ], [ - 0.6551871886231263, - 0.7907115088669235, - -0.4848373496147646, - 0.05286302797465868, - 0.031287935650271936 + 1.2085214540054778, + 2.0833896640736045, + 4.5824227374592015, + 0.05634270843853885, + 0.13514179804751 ], [ - 0.43216273673783906, - 0.21561973098837148, - -1.3896184073481896, - -0.19864327259534217, - -0.32880447878001245 + 1.5545093896909905, + 2.334101549031152, + 4.683654922900274, + -0.05268222478232934, + -0.08492457885014869 ], [ - 0.4012100681556956, - 0.5376263562386335, - -0.8178385101160546, - 1.0499632593462658, - 0.02349486947136495 + 0.980597054290587, + 2.8308194334497463, + 5.71707437007518, + -0.825084835216324, + -0.37589211830564945 ], [ - -0.21458841998142775, - 1.7503003829294752, - -0.8810136248549272, - 0.4225265548578196, - -0.04336114612440708 + 1.1741631199772065, + 2.3915499700242244, + 5.139481020846296, + -0.5034853951858606, + 0.5072882784704502 ], [ - 0.3252528441985174, - 0.920016690394147, - -0.25631180855169977, - 0.6056797125557107, - 0.7388914124815676 + 2.037282637922778, + 2.846330611702864, + 5.291811675457125, + -0.721652196516798, + 0.617824096955346 ], [ - 0.38750698931463456, - 1.604005940052242, - -0.523600452310943, - 0.2886966615377732, - 0.9613100389214274 + 0.8477648560224776, + 3.2754516215343745, + 4.8310546462183535, + -0.32605273132332724, + 0.2414841905501529 ], [ - 1.5506521921462606, - 2.3351967945381698, - -0.010646190033330661, - 0.002852035354019854, - 0.7977256606768455 + 1.0151446664619441, + 2.7068904071416573, + 4.839096256071166, + -0.18758332033843927, + 0.11255531056082603 ], [ - 1.8763393460656215, - 3.2968256926097306, - -0.32960183001917587, - 0.18528430525762465, - 1.1195935268247998 + 1.3016966894098652, + 2.5370378401949143, + 4.854558860454963, + -0.3534084094147311, + -0.2760719689117193 ], [ - 2.5927629158554635, - 3.7225491288232115, - -0.05375270446280157, - 0.08143515333263464, - 1.2462982805793263 + 1.0364104744582243, + 2.539173360004876, + 4.2921117398551765, + -0.11530767385777417, + -0.5932128175913766 ], [ - 2.8928129068541137, - 3.830768431717928, - -0.1241624977556945, - -0.23443294867523057, - 1.3847167035899817 + 1.3011330315239122, + 2.642798875688195, + 4.19558995872716, + -0.1943023535695303, + -0.9095878776736323 ], [ - 1.7496462980977117, - 2.178946485163962, - -0.7865705822039919, - 0.1968770565917678, - 0.761584069424927 + 1.2517072110924283, + 2.86179807758862, + 6.580747351780941, + 0.3448674500140737, + -0.2075371437562102 ], [ - 1.8156994778245048, - 3.0036938188202718, - -0.45778864311216655, - -0.33750932752503154, - 0.3643210274288376 + 1.5011451239019702, + 2.5443277697535343, + 5.17917847821752, + 0.590065636705239, + 0.18545230774780247 ], [ - 1.2245838099893023, - 2.2246210405510576, - -0.4106793330056792, - 0.13260190375989814, - 0.3204829696978278 + 1.7059251125984691, + 2.958410801503283, + 4.660339852976305, + 0.8762081666060192, + 0.11981201974495456 ], [ - 1.802922185521605, - 0.5422213858670483, - -0.49720106821635107, - -0.3633493626513707, - 0.6154214684853682 + 1.6365114375342773, + 2.1965877803931555, + 4.318746196553877, + 0.09264158252805459, + 0.29382099735848705 ], [ - 0.6949381668012479, - 1.7915916917373527, - -0.7408452848834897, - -0.01368148013208966, - 0.5597919095437712 + 1.9918372501775399, + 2.407182070934174, + 4.423574279335562, + -0.3137534687343192, + -0.34242881116825646 ], [ - 0.7329978425841557, - 1.5510774593206853, - -0.3672512578599931, - 0.21028212828129822, - 0.3732364072349594 + 0.7687958604000149, + 2.016022031029258, + 3.978609939406516, + -0.051867384627720274, + 0.20111836491152846 ], [ - 0.45483393438019454, - 1.4685283811539045, - -0.9391520849020806, - -0.019443160559238327, - 0.6383342932191074 + 1.4065074658278989, + 2.8727669673463074, + 3.9354226656576077, + -1.1435723356595355, + -0.01619751416296466 ], [ - 0.8309083521084272, - 0.022512114797956468, - -0.1487541873584138, - 0.760707516449114, - 0.9635144305920965 + 1.3224954876933346, + 1.9029333514212852, + 4.613104188317251, + -0.21102469019761783, + 0.2564580053081299 ], [ - 0.6021612412344224, - 1.9760103666792093, - -1.0409262291846955, - 0.7235233438833581, - 1.2450230625010252 + 0.9648711576828831, + 2.7559844568145686, + 4.458258376029703, + -0.7663919052995095, + 0.7116697067704751 ], [ - 0.49242571859951234, - 2.5689298276905825, - -0.9376046082576699, - 0.32726021549426815, - 1.8075495348953639 + 0.3009665683579941, + 2.7096751723950097, + 5.207853775915285, + 0.07801859703258253, + -0.20241613916015216 ], [ - 0.2778355785724929, - 0.4538356158389809, - -1.0836397055044809, - 0.47435654441598935, - 1.334923315756632 + 0.2448180563733001, + 2.649262093394933, + 5.231669041610236, + -0.6071223418651732, + 0.7843116407692493 ], [ - 0.8574046631440758, - 1.9442508706754957, - -0.6579068123840308, - 0.39318969079234967, - 1.386471799068898 + 0.673400903804352, + 3.6882876666926188, + 5.279045199200049, + 0.18637075904556824, + 0.05199343912731152 ], [ - 1.9366829041022744, - 3.109576667702389, - -0.5355019193813848, - 0.5533720070492653, - 1.6492883418914093 + 0.8329754728901315, + 2.3296093710222676, + 4.1547413789502325, + -0.372947574254209, + -0.06555413181999041 ], [ - 2.8787914934612235, - 3.7125342019003176, - 0.3461724971540613, - 0.6115827317724547, - 1.041790728160612 + 0.8261959146199807, + 2.666105197779819, + 3.8796202522466414, + -0.3600162395004711, + -0.5683609364168218 ], [ - 2.275331699634724, - 3.3200558651414753, - 0.15267774160071051, - 0.25712475844211585, - 0.9051760059010693 + 0.6624297304161938, + 2.740093678949439, + 3.8823872326471744, + -0.2683371772231949, + -0.13189139075594242 ], [ - 2.3677638987951837, - 4.1383717696683275, - -0.5623802512569263, - 0.20310894289697873, - 1.3962560212553103 + 1.4166914421279866, + 2.4642756349072585, + 5.459464740862068, + 0.5452108961304898, + 0.38395641958814875 ], [ - 2.8771842023818275, - 4.1924853395325625, - -1.388810259292619, - 0.46553257949105753, - 1.7084983261668154 + 1.7621647891650165, + 2.204802425812616, + 5.567706716963157, + 0.5215406337489672, + 0.30849853829081286 ], [ - 2.3929901416509605, - 3.1889563839090638, - -0.9234591647271738, - 0.04177543107176422, - 0.7181814216182224 + 1.998074866003718, + 2.999131207153927, + 5.945567335007488, + 0.9520397022589699, + 0.05783445770874078 ], [ - 2.3658816623678947, - 3.0927010960289456, - -0.7825359429142177, - -0.13518743715485634, - 0.4358536564024414 + 1.2868066624353445, + 2.400879888473092, + 4.779237813096181, + 0.3804104981273723, + 0.0996422028572106 ], [ - 2.3215725443818775, - 2.5935068568664827, - -0.6387817139028222, - 0.4511974855224252, - 0.7483324517216122 + 1.0565615278364502, + 3.128741114040331, + 4.666207565966269, + 0.740503562817991, + 0.6524681149141298 ], [ - 1.0002579944621743, - 2.0404603042227043, - -0.6462131835203697, - 0.4048058948347981, - 0.5728184627655564 + 1.4285550625068717, + 1.6790620089319674, + 4.085821803998431, + -0.6742138985736589, + -0.661847960858252 ], [ - 0.5982947975618771, - 1.9058374737407808, - -0.5311801959919125, - 0.31643355914438825, - 0.41098261259270985 + 1.5897781924248828, + 2.124236051476059, + 4.989322973046208, + -1.531399994143381, + 0.39614204982115764 ], [ - -0.5471004571711683, - 0.8073730566277836, - -0.817277691294991, - 0.49481138604658126, - 0.35930458253028663 + 0.9876992212647979, + 2.3703430695909415, + 4.193652123444841, + -0.6788701420078769, + 0.04684676064424032 ], [ - -0.0711393001562578, - 0.6421714574059865, - -0.09839628190632949, - 0.37256464531562616, - 0.38300658226304835 + 0.5536582121723114, + 2.089993936354695, + 3.9385926626528165, + -0.5619824745018399, + 0.516988801752879 ], [ - -0.7484495719912057, - 1.33887902484085, - -0.4766776473402087, - -0.005629177104199845, - 0.9951864575999921 + 1.0011108859392026, + 2.0230479489319633, + 4.544563407890958, + -0.501770998655111, + 0.1911687475888711 ], [ - -0.24492104159538725, - 1.527542771934258, - -0.12212393875912853, - 0.6893422747071948, - 1.2111050640521972 + 1.0191788042475314, + 2.116816768317364, + 4.107192840663075, + -0.41206862202348304, + 0.6240752749223015 ], [ - 0.42175738964572357, - 1.616373774126055, - -0.18795994638124153, - 0.6545108353765874, - 1.7384741211479333 + 0.7919524194066558, + 2.477881676236069, + 4.591176767832818, + -0.18581099153507072, + 0.40951702565638076 ], [ - 1.1831871543075383, - 2.731823856490273, - -0.29077166257635406, - 0.6153834592750645, - 1.3442493989462627 + 0.8521928639266559, + 2.08840249942922, + 4.845087303216071, + -0.11881262286882481, + -0.41516348447584767 ], [ - 1.342873615546089, - 3.3965281928403397, - -0.14619026781445577, - 0.5246255674020793, - 0.9968920120157235 + 0.20032680155411955, + 2.692571217936397, + 4.431568026207915, + -0.366447730989895, + -0.28423915112431103 ], [ - 2.0131827404734004, - 2.6992065327950336, - -0.12635339184751068, - 0.41837269196252147, - 0.6207960845623213 + 0.39192387070522583, + 2.002584866002566, + 3.454662091772037, + -0.2427819540583453, + -0.5712632144959581 ], [ - 2.4082213656144003, - 4.493055664905489, - -0.8008164845904128, - 0.34456700932798684, - 0.9827869909468282 + 1.6121768072797293, + 2.209391961790779, + 4.980584160368059, + 0.6564118970935291, + 0.06782921300022705 ], [ - 2.3323752852489266, - 4.138584633982633, - -0.9297561590418322, - -0.046801258620356986, - 0.799638251701895 + 1.0213313237555488, + 2.271581127945382, + 5.050719423312976, + 1.2399704107143958, + -0.0729014512582004 ], [ - 2.631439189115169, - 4.433800466987122, - -0.927697546042244, - -0.821612490847651, - 0.5320044623897618 + 1.1794248188149425, + 1.6561991232655071, + 5.275907957272519, + 0.9108439273329862, + -0.33979223610739745 ], [ - 2.7917917207953105, - 4.266481295164069, - -1.0027335752310953, - 0.06742356381976804, - 0.06064485363448427 + 1.868048589051358, + 1.7451108453568969, + 3.6482625894933847, + 0.18341801837471627, + 0.21245694322624561 ], [ - 2.0561841157235032, - 2.218599199334188, - -1.0216567335272762, - -0.4848144123792654, - 1.1164897917328778 + 1.1751238452949708, + 1.3067061190187381, + 3.501916626347191, + 0.04357537390983007, + -0.43776609614872164 ], [ - 0.03360782779033954, - 2.037532353376665, - 0.08132713020979855, - 0.5835760995667307, - 0.1874544392342426 + 1.699160875472639, + 1.4534015598142227, + 3.632606121693096, + 0.339227349541418, + -0.07976119758221596 ], [ - -0.8215445344618895, - 0.5909966071321697, - 0.309346586308935, - 0.8799050376742196, - 1.1457145773707171 + 1.5272955531315973, + 2.111440651395018, + 2.1184505731140097, + -0.8630523277815876, + 0.3655294372572319 ], [ - -0.39481250431038645, - -0.1076842697747109, - 0.7103320994966826, - 0.05410469878074908, - 0.4231058265970393 + 0.5156207840512926, + 1.2894110394607177, + 3.9934372581710518, + -0.19896508668418517, + -0.28615020917341166 ], [ - -0.69481092062757, - 0.29768058753091364, - -0.41045881991505123, - -0.29414864290515075, - 0.9794275501492852 + 0.5452457427476317, + 1.2623698948673654, + 4.614891890255337, + -1.007861237479904, + 0.14097527106816576 ], [ - -0.2746226811801948, - 0.8671843147426374, - 0.040409973426567616, - 0.20319188871785696, - 0.6364416515222157 + 1.063851646546914, + 2.98507327109099, + 5.129204610825666, + -1.2656521933238658, + 0.7540046890881752 ], [ - 0.6151144379160488, - 1.6034422204234002, - 0.13365265512192165, - 0.3773145707636072, - 1.3421999087039729 + 0.18028870684127699, + 1.778928669918524, + 4.77296613308582, + 0.06355909643473584, + 0.807854597581813 ], [ - 0.26085763436358944, - 1.6099488577149843, - -0.6898198187886864, - 1.1214845991518327, - 0.8967349711628857 + 1.0099536050050044, + 1.8576175797911243, + 4.17246736075934, + -0.7295602316237002, + 0.8776861401928886 ], [ - 1.5634570661266314, - 3.2338476934383715, - 0.2845812782286911, - 0.8915009836532515, - 1.3510078745283114 + 1.0956609069537224, + 2.1436671548930075, + 3.7571583818272667, + -0.5492604215148446, + 0.353242500194265 ], [ - 0.9922748483109606, - 2.9357509160560853, - 0.442965025382096, - 0.43169163904538166, - 1.5316983649989726 + 0.9300836350935179, + 2.2448919688469595, + 3.514104753050218, + 0.2168807327468172, + -0.6099371202765981 ], [ - 0.88847041768517, - 3.426192181940303, - 0.07878034037595813, - 0.6399081980947753, - 1.3592585647939546 + 0.461462969622469, + 1.598478633557804, + 2.922984963807526, + 0.21187678288331588, + -0.3572592387983753 ], [ - 2.8080855897797306, - 5.1777279245087, - -0.6333855363705108, - -0.007311919155137818, - 1.343308049708961 + 1.3092246845912276, + 1.8035224086845958, + 4.208275712135095, + 0.7748226568228309, + 0.15756512971396777 ], [ - 2.4613870469456214, - 5.871292558562292, - -1.1643666190920234, - 0.276675932295795, - 1.4639113693157337 + 1.9211892668301949, + 2.2643482507670356, + 4.435804631900845, + 1.4099511933557658, + -0.05653278397067523 ], [ - 2.6041502358985897, - 4.787588132407388, - -0.6208161446122828, - -0.2165917147900401, - 0.9640499698075017 + 2.1212185251045197, + 1.664690518715856, + 4.908261738055706, + 0.9880148238512606, + -0.3655959539237423 ], [ - 2.6085362325208115, - 5.5297493305278405, - -0.45667726018513327, - -0.6356401128551316, - 0.4540297758352483 + 1.9350349182234274, + 1.7383822135833507, + 3.6964000905543615, + 0.6870875372823521, + -0.5673812911108557 ], [ - 1.122641806127509, - 3.3216454923274132, - -0.2100685151101776, - -0.1824374679497856, - 0.9858132898228549 + 0.7026993751528264, + 1.9353649694849242, + 2.8079728661958647, + 0.30832230943441524, + -0.417524523145072 ], [ - 0.9703055728214989, - 1.8968435439109286, - -0.04638957595633523, - 0.010472401659130416, - 0.22600082826594237 + 1.074209447094958, + 0.7862526107267674, + 1.81460153842723, + -0.056816268802337436, + -0.8794537345877157 ], [ - 0.09357228063081627, - 1.55530082010883, - -0.03685467145344867, - 0.05233196330171038, - 0.31858249835315305 + 0.5384363954544331, + 1.3395881607668638, + 2.1445736479762765, + -0.6640133602510352, + 0.004401510466938548 ], [ - -1.163431450149809, - -0.27131344571367794, - -0.369942979417458, - 0.5482172366998231, - 0.09280709516681665 + 0.47989709132125963, + 0.773877291624637, + 2.190457931111676, + -0.564595662283917, + -0.2745023172850925 ], [ - -0.7251110951582558, - 0.17158286266592107, - 0.09910544484202914, - 0.2916105459653421, - 0.36211180686009015 + 0.45829333536746836, + 1.1852287634628702, + 2.8444975745644245, + -1.1555527246368213, + -0.2263262595220432 ], [ - -0.6125467606641878, - -0.26001310360033475, - 0.30565304813378147, - 1.0299836959551387, - 0.666065395807765 + 1.0678358478525904, + 1.3637739480965823, + 3.3308107453811626, + -0.2198848130530728, + 0.9492106039775866 ], [ - -0.6815927064581064, - 1.1060487585339667, - -0.03888737439958087, - 0.41907126731137545, - 0.33439383444422843 + 0.5687034614403196, + 1.6364349167200951, + 3.4179147062253934, + -0.39104127748501233, + 0.9652921572924246 ], [ - 0.3478199468543588, - 1.4015971072537885, - 0.2665725209697048, - 0.21217075454411224, - 0.9641743612755305 + 0.6582354990538501, + 1.8543859177341138, + 3.7342739640157414, + -0.9433469070057338, + 0.33734681542700146 ], [ - 0.6186355809233315, - 2.1274111835213874, - 0.4216167065766686, - 0.6407653408438818, - 0.8458993087552533 + 0.27407897959722877, + 1.7699747983244594, + 3.1624851371930895, + -0.5074833104539661, + 0.3033952711126538 ], [ - 1.1402060262034375, - 3.4345056388602266, - 0.5079484042743427, - 0.27072737085407905, - 1.2111644700749054 + 0.44579563732633515, + 1.7855404113276745, + 2.757874047142751, + -0.3671032955512235, + -0.4580450366612238 ], [ - 1.0489357096874241, - 3.8725558655565875, - 0.34604469343664374, - 0.13269515251813077, - 1.1292843704246684 + 0.24789721647439764, + 1.2177415556200109, + 2.8760250507569003, + -0.042423631344834796, + -0.18762929357983626 ], [ - 3.358928175059375, - 5.858993142810862, - -0.4957966866074725, - -0.12890414777025996, - 1.5267703489235445 + 1.3325639901757798, + 1.1206081345215617, + 3.9701807721968225, + 0.9599801426682858, + 0.40605277882411306 ], [ - 2.0534835725278335, - 5.766257050117149, - -0.6099303734255171, - -0.4210062509114985, - 1.0346564332353736 + 1.1598382176038589, + 2.431082997733723, + 4.113592629832734, + 1.5701272845757832, + -0.8872600539758478 ], [ - 1.9138478104994523, - 5.3649532567296685, - -0.1960646484867495, - 0.043322520924937075, - 0.2912326586589496 + 1.3562207605973668, + 1.2958100772609078, + 2.5347520921646387, + 0.7685927652855759, + 0.08538643647793086 ], [ - 1.3025016005797234, - 2.981420724284795, - -0.8852005635591189, - -0.655594678998571, - 0.36764433862065393 + 0.9768858844798378, + 0.5046194923422614, + 2.3947298904673833, + 0.005701218387341972, + -0.6630661956571147 ], [ - 0.547272426024786, - 2.89518976734185, - 0.12512992867168646, - -0.7030620112229085, - 0.35723744697371185 + 0.657501253693507, + 0.6065843716706528, + 2.2063742644383724, + 0.06974399758779805, + -0.0455000705260294 ], [ - 0.5295169866158542, - 1.42083617339815, - 0.4689188836434046, - 0.08598743265276065, - 0.4863404372459543 + 0.5311699624147033, + 0.6038929156380646, + 0.7362318381959218, + -0.7240718511733177, + -1.3081891670602193 ], [ - -1.2294941403731465, - 0.4852165558694319, - 0.2168820737906057, - 0.08136940009945232, - 0.2271316717771644 + 0.5031453239519831, + 0.3528197702687807, + 0.6548306586632245, + -1.3039208061171994, + 0.3093032598849138 ], [ - -0.5574518503018893, - 0.12460076044820251, - 0.5124653658711905, - 0.20369742299346785, - 0.46723774321725 + 0.9190037380149694, + 0.933638084359524, + 1.667725192827149, + -0.34284999307249003, + -0.38640025377220266 ], [ - -1.2281640241495604, - -0.2774316604786803, - 0.11506833869030819, - -0.5550127934005918, - 0.0016022713619755964 + 0.853451263785945, + 1.5014372722371196, + 2.246855002767236, + -0.05128477801210673, + 0.725835383203386 ], [ - -0.5654743449753633, - 0.8326385996050807, - 0.5496312693327615, - -0.1530499592231374, - 0.16144614295439727 + 0.11692490741584455, + 0.7918783818971964, + 2.2176290522276783, + -1.1118509419789198, + 1.0258048579648098 ], [ - 0.5790123743743301, - 0.9887773547459361, - 0.34992965419925415, - -0.28319182854162983, - 1.6378781855737483 + 0.592784229448503, + 1.1941343288713198, + 3.053503573756611, + -0.7543237068711327, + 0.5998706742505975 ], [ - 0.6607553231389134, - 3.5180480130953877, - 0.9046475112224054, - 0.26076848277248954, - 1.2755549466684375 + -0.16488566149604095, + 1.3571706912833623, + 2.0603348941679673, + -0.43942705536032406, + -0.018454262740109816 ], [ - 1.1210150300791306, - 4.297670039846464, - 0.31984430986678575, - 0.5517254369141267, - 1.6768437152428473 + 0.09085924253972366, + 1.1008009192193862, + 2.6759170395907943, + -0.47132718116789324, + -0.1724114931575147 ], [ - 1.2375407432700984, - 4.613333189858144, - 0.9918310521611775, - 0.2682618171378632, - 1.5189656843165078 + -0.16696443408326173, + 1.1643299776082494, + 2.8723886696029917, + -0.35700389675179806, + -0.3403721043932459 ], [ - 1.629407577578829, - 5.374752971819916, - 0.10252927772125009, - 0.8119775069344439, - 1.701881321920269 + -0.011213750620562537, + 0.696088197070647, + 2.14423322547409, + -0.5845373878681585, + -0.012507942502396816 ], [ - 3.368870163727252, - 5.613825979550051, - -0.3532463330101539, - 0.431076438754934, - 0.7612228686403842 + 0.3186430908816602, + 1.6731242162007185, + 3.4305122475816106, + 0.8889116366385655, + -0.3937270187904013 ], [ - 2.213987253983332, - 5.001534063605792, - -0.5436696102111125, - 0.06259333697750483, - 1.218634238015028 + 0.8679478027707438, + 0.8683082174487174, + 2.4404498592687696, + 0.38006781210934154, + 0.17858774247871978 ], [ - 2.148147239793836, - 4.6659168591145335, - -0.7020191941506613, - -0.0751554740244218, - 0.7588323910355578 + 0.07927771441041678, + 0.8541474602392255, + 1.666636278727208, + 1.1940762282090727, + -0.6478253369399224 ], [ - 1.8214348201750679, - 4.263734909920664, - -0.18650412564477817, - -0.4101654626537867, - 0.9328190851857978 + 1.1208977114266845, + 0.6007782967084563, + 2.389029302385085, + 0.35520706181979855, + 0.01744376290205099 ], [ - 1.2880942504251087, - 3.956554056564873, - 0.5793467458000799, - 0.2287730423884867, - 0.1915788260106377 + 0.8437513817848217, + 0.6412660553915479, + 1.5968816142258047, + 0.29123464856919296, + -0.4107175714620703 ], [ - 0.5985049064616091, - 2.295141663610958, - 0.1365995592850639, - -0.36011380891808265, - 0.1917848544637705 + 0.5901972633583394, + 0.4362271292914642, + 1.294083841409993, + -0.05349151783155602, + -0.16930694167919424 ], [ - -1.0287442271601128, - 0.808233800986471, - 0.02985986422588862, - -0.2743678753270097, - -0.4362687797153237 + 0.47997191108876347, + 0.175072748394403, + 0.9642042609093001, + -0.41877129085965326, + -0.29464211828878256 ], [ - -0.9613016395124064, - -0.41758226346601296, - 0.938088371698604, - 0.4505266104098809, - -0.1863551565621319 + 0.3611632140257371, + -0.11090238731121117, + 1.0846329869036482, + -0.18725006558973098, + -0.5534441565471749 ], [ - -0.7825214687061364, - 0.24099616506456611, - 0.9948348394961382, - -0.3036228165032315, - 0.7044107728875946 + 0.9414013562555364, + -0.10628261018362942, + 1.0191320454629278, + -0.7801196898911945, + 0.4707909153580106 ], [ - -0.3736990498705295, - 0.970839398295028, - 0.8028206881393741, - -0.05299022966840451, - 0.6232266463885369 + 0.5841003152169423, + 0.05336876711025653, + 2.2163879896016687, + -0.43368390654676714, + 0.035762552245896466 ], [ - 0.13029519864314704, - 1.7696104231473733, - 1.1247778677319373, - 0.09826618426422198, - 0.9630144351408824 + 0.6154406199635283, + 0.14371591310363566, + 2.2215144215869476, + -0.5045711425786173, + 0.6808593506867711 ], [ - 1.209029227312682, - 2.9115411971207923, - 0.8997742461018645, - -0.2645009070273553, - 1.6934405123630365 + 0.10618025190260805, + -0.47617267501134375, + 1.3608862544147666, + -0.9777712237147812, + 0.212693633854121 ], [ - 1.4690659898846266, - 4.59812140936319, - 1.2276179121219344, - -0.3359347068011376, - 2.341999974239422 + -0.11807324035397887, + 0.008842788847872386, + 1.9620948722769802, + -0.7923880238173836, + -0.29798610096085687 ], [ - 1.9907186044261833, - 4.618477268046524, - 0.7713637497170366, - 0.17879735101594815, - 1.7432793782368639 + -0.3208651118899727, + 0.48583242433847473, + 1.8273847576420827, + -0.65549250372983, + -0.290017024584686 ], [ - 1.898595310447839, - 5.578034521078339, - 0.5495958309557438, - 0.18051624315957107, - 2.291460197950016 + -1.1163739423589878, + 0.6141076738503808, + 1.0751080801579571, + 0.07787733647915743, + -0.8803544610103249 ], [ - 2.5529358188757385, - 4.82631169595227, - -0.01720136724211048, - 0.6829212978430761, - 0.5717805572417207 + 0.2925981201789361, + 1.1118771708049793, + 1.5198416449507677, + 0.18275265379333902, + 0.03126462810309509 ], [ - 1.1939432634207792, - 5.303311356739872, - -0.20313727793265945, - -0.39435050082306283, - 1.187559479393104 + 0.056507139829511464, + -0.08412270212235275, + 1.3462073837806476, + 0.8678319686914262, + 0.9441511035309383 ], [ - 1.5740098372524802, - 4.792827841655881, - -1.4663142987533275, - -0.24395186943584934, - 0.9941266312562368 + 0.6742441570776267, + 0.7152211661750942, + 1.7543819692919176, + 0.8801673924331402, + -0.5766660288077936 ], [ - 0.6335241651170511, - 3.7533237238484616, - -0.015093638192842108, - -0.6473855176749205, - 1.1626427486514646 + 0.5631407137904441, + -0.266575072454502, + 0.8682221379959462, + 1.2494019281383588, + -0.32970022003692384 ], [ - 0.3445807014366932, - 2.823297716372948, - -0.013666037499046893, - -0.5128370383318502, - 0.5569008166636092 + 0.9801016400089619, + 0.39971005977034885, + 0.8223583330120275, + 0.6037738203548955, + 0.3513718950249854 ], [ - -0.02308734122838143, - 1.3492659618046006, - 0.07366921820810175, - 0.08769187382879905, - 0.4802024087175634 + 0.8126016975169271, + -0.2728522764839875, + 0.5045119031489347, + -0.14179032160778932, + -0.6964365096052763 ], [ - -0.6578497319806488, - -0.5411989967124886, - 0.474906520277438, - 0.032903072002192855, - 0.9814969391282642 + -0.1322274830544329, + -0.7472013277613836, + 0.12747881839500116, + 0.0700515776928526, + -0.9353691876993394 ], [ - -0.789059918121486, - 0.4910424843733424, - 1.4540180739873516, - -0.136387293656299, - -0.15952152294630284 + 0.17988399239076341, + 0.20390000234987718, + 0.6080425381173586, + -0.42435358288100467, + -0.31889564695737715 ], [ - -0.19338379216751497, - 0.48149676448247325, - 0.7230546433797709, - -1.2737150600124774, - 0.3717642370147612 + -0.07202108044084926, + 0.954994285055254, + 1.751024982301288, + 0.18530356890836203, + 0.5646004915380893 ], [ - 0.15493811426646328, - 1.6993646139152083, - 0.8024955133854875, - -0.01559484554228762, - 0.6670989718846573 + 0.5535095673571517, + 0.48932909256118967, + 1.7515486288032243, + -0.9790297009609499, + 0.45006779390592816 ], [ - 1.4085159874993112, - 3.0604879689916014, - 1.3841257714582598, - -0.04576156875397181, - 1.25185215285403 + 0.177282615456642, + -0.048084605571424126, + 1.3260584524668282, + -0.3671209157181891, + 0.27758235596734754 ], [ - 2.3291941156600973, - 4.5213272579654395, - 1.6222974136776194, - -0.08759732581003216, - 1.5724463959079442 + -0.554252730297462, + -0.38022203537731913, + 0.9151283161298753, + -0.5354753979630551, + 1.1015108666362803 ], [ - 2.0703050640502867, - 5.684645729312868, - 1.0908912076796797, - 0.37011241908595727, - 1.323745152754715 + -0.47606625304681366, + 0.369665545281195, + 0.9068414129103565, + -0.35510860803385486, + -0.18926239104367823 ], [ - 2.0720389383323203, - 4.875463895813063, - 0.7306386373161552, - 0.11648748087179694, - 2.024873406029657 + -0.44738314600669693, + 0.4150963065399183, + 0.6414782759620065, + -0.27760002169190195, + 0.22311950183436907 ], [ - 2.566658689254531, - 5.67386939601647, - 0.9500504454212306, - -0.6058023712608482, - 1.779963659777152 + -0.9996224059086142, + -0.1105445591031777, + 1.2744163755922633, + 0.0689022101324883, + -0.2387096600873836 ], [ - 2.203518345523608, - 4.143294721233011, - -0.8832796283417778, - -0.4446479711503917, - 1.4536400875804991 + 0.32726420971037923, + 0.23274491360720495, + 0.41804010558489735, + 0.21353898367312144, + -0.07760466862966461 ], [ - 2.1698344736618735, - 4.176274023376684, - -0.13416857822082054, - -0.10646570557448608, - 0.5234408345666092 + 0.183471637362059, + -0.18655834755930034, + 0.23969889273323122, + 0.056588664639297175, + 0.1694617096454489 ], [ - 1.6453850301012078, - 3.9745057219166426, - -0.520422158171827, - 0.007847264276674034, - 0.9027161745511578 + 0.3995276360079271, + 0.3777547915960302, + 0.7598104796711019, + 0.4694537766531684, + -0.1296157757796646 ], [ - 0.8893423917896947, - 3.540632027248776, - -0.0981307530956886, - 0.0507350642228603, - 0.8802856170127397 + 0.4797458869907414, + 0.020876826049875705, + 0.10771836466358496, + 0.2047088489681505, + -0.23625940647203814 ], [ - 0.17890282960500703, - 2.423809212742726, - -0.04089499806567508, - 0.25190821320153894, - 0.4830546605902428 + 0.4937709728170792, + 0.044456894830506265, + -0.28405993178123723, + 0.47008673832655656, + -0.2465514069987069 ], [ - -0.14184308110407626, - 1.5236948452750592, - 0.4140013168949298, - -0.5099124365670672, - 0.4788213253918777 + 0.3970298216121823, + 0.11227000745609055, + 0.49693456518346607, + 0.5465665292623758, + -0.3348124346387834 ], [ - -0.22279501041361305, - 1.1496001204966055, - 0.5703777534292219, - 0.16756653469411575, - 0.06830324753337924 + 0.13169494560190226, + -0.6107454869902258, + 0.03166166633856812, + 0.4388215608232737, + 0.2608102701720588 ], [ - -0.12303527533410227, - 0.7836305709388894, - 0.42704001365461547, - -0.14315512907022734, - 0.2956775911212086 + 0.18239280126207538, + 0.2320624510059441, + 0.2099760410390478, + 0.1888355860085867, + 0.16914642289607507 ], [ - -0.06873000599712016, - 0.8787324176310558, - 0.9181877225069669, - 0.08935546475492584, - 0.2713702644288822 + -0.3968961339029149, + 0.8685951241383708, + 0.552334537926251, + 0.3613714795587682, + 0.6803821064973781 ], [ - 0.7392910641619871, - 2.13769659002756, - 0.7261391683618894, - -0.2054400326714251, - 0.6987916950102013 + -0.060515078112174235, + 0.272630558099274, + 1.0159197441141186, + -0.37708389724630886, + -0.18533336611300769 ], [ - 1.022303903274294, - 2.4318100060935057, - 0.7000224322695546, - -0.3280407596919874, - 1.3679038212750574 + -0.10371642917027087, + 0.5257842590778058, + 1.042072371330857, + -0.6114020748012791, + -0.19202697928842447 ], [ - 1.646365508101475, - 4.233046150310133, - 0.9799522645405662, - -0.46978261994771925, - 1.5999124294607303 + -0.07125075991316387, + 0.43420478195563994, + 0.9304842678525156, + -0.29842345748437643, + 0.15556734677916273 ], [ - 2.1959999571080018, - 4.454386324780912, - 0.8736908979022959, - 0.003738888881228704, - 1.9820487002766567 + -0.4880095957064795, + 0.1080399392027785, + 0.46327153675272337, + -0.5101601294073017, + 0.07411431632361601 ], [ - 2.446254373331375, - 4.972577221958999, - 0.6114615379187867, - 0.048195648905971, - 1.9389946810418315 + -1.0266869382901986, + 0.21325804702680234, + 0.2391901829022996, + -0.6335082904811551, + 0.24389005910012582 ], [ - 2.8577968484175718, - 4.980021915084609, - 0.9211024994156034, - 0.7192302684671511, - 1.8494468274523361 + -1.224989974592623, + 0.46153845291076145, + -0.334840984853671, + -0.7513775377050679, + -0.6176487565047877 ], [ - 1.0552159321989016, - 3.7992604307744937, - 0.30391350545417106, - -0.3990326250535733, - 0.5202758440963682 + 0.4462139922788384, + -0.022153570577253527, + -0.3232061540178293, + -0.027296769430487425, + 0.14051382219598813 ], [ - 1.1598856115798695, - 3.088238658957528, - -0.2936136421804772, - 0.013952434392239622, - 0.4061780729829158 + 0.5072861064294615, + 0.3593232045165379, + -0.09623785666527682, + 0.0023478283136030456, + -0.14941610094205263 ], [ - 0.7703681602162424, - 2.0962050518643385, - 0.02361796911120116, - 0.05982440286332788, - 0.5188505382273714 + 0.2039821308354709, + -0.04983234515172797, + -0.30352959134158813, + 0.14248631177267235, + -0.19173680107603935 ], [ - 0.5337082859743661, - 1.8167937450896912, - 0.11504215212117314, - -0.03131206500967303, - 0.563963241017009 + 0.10986991967087976, + 0.016457059348712645, + -1.223768479316443, + 0.5974462066003423, + -0.7417834992513763 ], [ - 0.20554458484319144, - 1.7638260318839785, - 0.25741177846262087, - 0.42977377377764364, - 0.7707127467877912 + -0.19689856673268438, + -0.48219086213786955, + 0.0018108976051188427, + 1.1616368257864647, + 0.7129653961573182 ], [ - 0.7322030888853669, - 1.6533428864007316, - 0.02085641785928398, - 0.4441121395346562, - 0.5840007372437257 + -0.3483447255957158, + 0.43255629548903274, + -0.4770602222493427, + 1.3219828196860608, + -0.04737257231918564 ], [ - -0.22624007052504666, - 0.7433950316452214, - -0.08224412393882416, - -0.39583840171420326, - 0.20817714011073074 + -0.11742427769738478, + 0.20677656227353797, + 0.49985676200585977, + 0.7471660961993403, + -0.33756270588128506 ], [ - 0.8487882300065286, - 0.4881660584595868, - 1.1504380372584928, - -0.38391364284065954, - 0.6232861873471335 + -0.16166231256565675, + 1.0493595495259662, + -0.24761708257641202, + 0.025466018668892074, + -0.4675319647731461 ], [ - 0.6551374437141649, - 1.8245461300770265, - 0.18802002922408553, - 0.16585905068541448, - 0.971770159424003 + -0.04169483082890256, + 0.3297764796411578, + 1.155010396928711, + -0.19418093357309507, + 0.09726473643704295 ], [ - 1.751956731465402, - 2.9176576553782816, - 0.6293568833645513, - 0.024689587340091624, - 0.9127382387389321 + 0.4969927230360137, + 1.0570081646349672, + 0.5757734522289095, + -0.2923735276949477, + -0.15841768897408467 ], [ - 1.9789244643857913, - 4.209920336570139, - 0.3690787913491466, - -0.36171167088483347, - 1.4917168929310738 + -0.15921173686174414, + 0.7815274816794939, + 0.33430884926220084, + -0.21055184255409926, + 0.2878608689181314 ], [ - 1.994824023857303, - 4.847939015097366, - 0.6913276757901223, - -0.32678521083825673, - 1.7128097552631734 + -0.6813286565848155, + -0.29886201632286946, + 0.049141326589397544, + -1.1523261278819419, + -0.30030233104576076 ], [ - 2.828255624620614, - 4.717533229508746, - 0.515373558560106, - -0.3040470522819746, - 2.5655705468944734 + -0.8591094778289997, + 0.40069793746696125, + -0.0019772656558154937, + -0.21402920494155792, + -0.059000464485022865 ], [ - 2.964585929416919, - 5.524448395475221, - 0.5043720251324478, - 0.7390379776917808, - 2.605290000483175 + -0.9029795330096785, + -0.08272553322402813, + -0.19680994728485832, + -0.11694192422032539, + 0.21187377337030064 ], [ - 2.624831332486192, - 4.76194154001569, - 0.8230900466702201, - 0.18371787455191727, - 2.4229363312370187 + -1.2855161730900844, + -0.31903506915331364, + 0.3235700184543537, + -0.17092122088835765, + 0.09988476651580426 ], [ - 0.9633441191255819, - 2.2615712137942485, - 0.0730989826731791, - 0.7485714496268714, - 0.2056131199361394 + 0.9446718844849317, + 0.28923817695281673, + -0.9829840932841969, + -0.5670647147577708, + 0.14001318043224 ], [ - 1.5037463964839717, - 1.751925568153865, - 0.1296103629002403, - 0.5399822650300659, - 0.5264417925926479 + 0.5616017349553082, + -0.5037485943508943, + -0.9886015745503102, + -0.1093190563688897, + 0.8422611227173854 ], [ - 0.8880312627333634, - 1.7729715777114623, - 0.12341381169946988, - 0.4938239020240396, - 0.31006652023634645 + 0.3113712366679151, + -1.160603121707392, + 0.11377914285029085, + 0.3006832905336694, + -0.22175086137635405 ], [ - 0.8186391370632, - 1.602576476559811, - 0.2824407320376507, - 0.17940638342202095, - 0.22947730318501602 + -0.024566614022264795, + -0.3506869206206567, + -0.2297211470506389, + 0.7569534399291342, + -0.41714810276049186 ], [ - 0.8560626137665386, - 1.5901489060926322, - 0.17889298900571063, - 0.3260948300731722, - 0.5382050876182808 + 0.573657114508575, + -0.11080892085897912, + -0.5830697202858601, + 1.1114864070318817, + 0.26347622034700047 ], [ - 0.638017179367521, - 1.3026553567120172, - 0.3456877281796874, - 0.16444116971872497, - 0.6397840890563163 + 0.199103210715514, + 0.039528956923024466, + 0.07951936743406372, + 0.6698746035122212, + 0.03179009494763512 ], [ - 0.8174241491084286, - -0.08234480636351933, - 1.006161343947365, - 0.5845627936692157, - 0.2526222504156222 + 0.2668415771512466, + 0.32631400548963546, + 0.12244017919458049, + 1.0594895929201205, + 0.058344523179195466 ], [ - 1.2258956501933038, - 1.3431781074732045, - 0.8578659176916681, - -0.006434130954522249, - 0.3700945231664555 + 0.6477878494325763, + 0.45729909917468303, + -0.16258223696932883, + 0.17590717613369058, + 0.7799671676383529 ], [ - 1.4954120878682027, - 2.430347831562894, - 0.22240227142208946, - 0.14686902479377967, - 1.4466861333979897 + 0.19289342881363655, + 0.6754910657441126, + 0.6905231552246512, + 0.38778915243504053, + 0.14025834548810143 ], [ - 1.436637529774959, - 3.5309459838357693, - -0.14150362935418742, - -0.8489935119844303, - 1.1197324944554259 + 0.40115448293005435, + 1.096942950060311, + 0.764538512487349, + -0.12135851112739532, + 0.4692385442999236 ], [ - 1.6826779933861498, - 3.8040655706691644, - 0.1360016320584902, - -0.25587454940554016, - 2.0440859968155856 + -0.09532430894664563, + 0.4135112238190163, + 0.7095453841727868, + -0.03975752920101899, + 0.04827238941890582 ], [ - 2.092516246930242, - 4.884691284377774, - -0.018057943275619878, - -0.8409775388750488, - 2.12310839988632 + -0.5284788936569244, + 0.8650189628142199, + -0.5883867292797516, + -0.2491173142418968, + 0.8605315394410102 ], [ - 2.383486946553788, - 4.700407248348785, - 0.289156525514909, - -0.00418077882509682, - 2.317804477114561 + -0.48267710372609507, + 0.34115074389814, + -0.34013132494509146, + -0.4664690332010548, + 0.1273918769323098 ], [ - 2.320843129072868, - 4.627071503727334, - 0.3093975050131149, - 0.09636851875558307, - 2.2555073930482394 + -0.9432141443237004, + -0.1278402825329506, + -0.8754281801955115, + -0.29094489056758827, + -0.11767897298871809 ], [ - 2.32909528465801, - 4.7413661612914515, - 0.44630448270711176, - 0.3435718070084623, - 2.2648878821189657 + -1.022688677570435, + -0.6738823955067585, + -0.47529048435924853, + -0.3415627054198511, + 0.5429603675514986 ], [ - 1.846398834991827, - 0.7833593672564406, - 0.47642698110211446, - 0.41510106422942034, - -0.7641189769487108 + 0.7221049358413941, + 0.06783688292356892, + -0.49695528558332186, + 0.15941604837463744, + -0.8751482343760368 ], [ - 0.22038692048298011, - 1.1628701268247479, - 0.4380909387291366, - 1.37333532895405, - -0.5603706318834932 + 0.45340206791158916, + -0.8636377280032506, + -0.8396340780291911, + -0.7897113615645525, + -0.31044787769407406 ], [ - 0.9639037906545208, - 0.99020499347308, - 0.7622928902621539, - 0.9512539041100871, - -0.01487349423506124 + 0.8512731624264513, + -0.8025362324704908, + -0.6847457204810607, + 0.29854477748754277, + -0.5538258133091253 ], [ - 0.5435367521183003, - 1.186967304710315, - 0.5597695743773412, - 0.25938680988893564, - 0.5539633569269028 + 0.6895103015849551, + -0.4283578563344639, + 0.12861786422764288, + 0.5321653238279727, + 0.6407198307117767 ], [ - 0.5235450204166789, - 0.893628135123006, - 0.618838475657339, - -0.004205972855989942, - 0.24843494947626873 + 1.2870327359063123, + -0.29444846402418223, + -0.5337813250613349, + 0.9978426550815858, + -0.21074028659449134 ], [ - 0.918911677205911, - 1.5468048725005406, - 0.17086770724612182, - 0.6827554988756448, - 0.08853458220785543 + -0.0703865585897104, + -0.670334514720705, + -0.7676291297173568, + 1.2512684747201692, + -0.1516172393380363 ], [ - 0.6214106147180072, - 2.5380566309987818, - 0.9119003770254736, - -0.09666598720304528, - 1.096807666187785 + 0.3056899924656711, + 0.03845851674097339, + -0.16949082865363893, + 0.7912496930303771, + 0.05424721428506428 ], [ - 1.0483102337966281, - 3.9268214447372514, - 0.02819771755617173, - 1.0555164214344197, - 0.12305251183767328 + 0.9802449655187622, + 0.9586259572039788, + -0.023811965114628825, + 0.7555332982818843, + -0.25506586929013536 ], [ - 0.810127000563983, - 3.5888377708271904, - -0.08504302836649398, - -0.17531404609219273, - 0.9221421865686591 + -0.13430016733853145, + 0.8201620933063928, + 1.289382836182492, + 0.1705712870069624, + 0.3646639608032345 ], [ - 2.019039963156437, - 3.623201860617334, - -0.16142959343466098, - -0.6404492404068132, - 1.108752042574776 + 0.3822139680155288, + 1.5351322388907833, + -0.43926318176453216, + 0.4972502597250732, + 0.26419111731928296 ], [ - 2.0833950790369293, - 3.9553539392695023, - 0.165076933063283, - 0.051620054055422804, - 1.798464677815901 + 0.9293231119528069, + -0.4956182532387262, + 0.10262729821596545, + -0.08203175640980985, + 0.3633214934226865 ], [ - 2.370972358688846, - 5.285355457648673, - -0.5511369310779752, - -0.6016116574104508, - 2.919731035501705 + -0.5233706948214507, + 0.7722130414583842, + 0.12553346427356016, + -0.8780899837194044, + 0.04977143619370074 ], [ - 2.2017681642931377, - 4.350009511322543, - 0.06537766000295397, - 0.20082919181295067, - 2.3737089523465214 + -0.5491718397676507, + 0.42705813358545164, + -0.8065107662522359, + -0.8948475068665396, + 0.3440997098435444 ], [ - 2.5757604822083584, - 4.501423750401722, - -0.09856699403109866, - 0.6119106348843507, - 2.7250079880197933 + -0.6589442858937123, + 0.02797328996068315, + -0.2379046449282634, + -0.15295529624876397, + 0.4367988429873738 ], [ - 2.286127879893716, - 4.427405761243727, - 0.6120167451654939, - 1.2044435987504163, - 2.7480774749196324 + -1.613676580152648, + 0.13183020759397082, + -0.4096396326662425, + 0.003989986588199807, + 0.30946296251050043 ] ], "movementCounts": [ - 15365, - 16772, - 18864, - 20553, - 20526, - 19274, - 18857, - 16355, - 16652, - 17667, - 15644, - 14861, - 12686, - 11668, - 10355, - 16150, - 17482, - 19980, - 19458, - 20759, - 22630, - 20538, - 19345, - 17669, - 17756, - 18213, - 16530, - 15137, - 12263, - 10530, - 20247, - 22202, - 23231, - 24095, - 22002, - 23303, - 24980, - 22741, - 23094, - 22734, - 20505, - 18395, - 15921, - 12832, - 9859, - 18272, - 21015, - 23237, - 22585, - 22487, - 19494, - 21797, - 20945, - 23622, - 19931, - 18859, - 16836, - 14904, - 14161, - 12130, - 24735, - 26033, - 27012, - 27368, - 27553, - 25653, - 25896, - 27126, - 27006, - 25281, - 20837, - 18385, - 17157, - 16299, - 13748, - 19773, + 11047, + 16551, + 16798, + 16066, + 16850, + 17599, + 18520, + 18475, + 18923, + 19566, + 18595, + 17005, + 13884, + 9582, + 7533, + 11976, + 15624, + 17425, + 18037, + 17027, + 19900, + 18833, + 19276, + 19523, + 20895, + 21347, + 18136, + 15919, + 14231, + 8685, + 16415, + 18647, + 22005, + 24783, + 24577, + 23140, + 22273, 23772, - 23458, - 22730, - 24656, - 21342, - 25656, - 22543, - 23126, - 20408, - 19776, - 17354, - 16932, - 15869, - 16305, - 21711, - 25023, - 29206, - 28302, - 30168, - 29227, - 28467, - 27623, - 25407, - 25202, - 24787, - 24036, - 22006, - 20190, - 15113, - 18927, - 21851, - 23590, - 25536, - 26287, - 24849, - 26317, - 25398, - 24116, - 25064, - 24715, - 22526, - 23690, - 20128, - 15089, - 22230, - 23575, - 29093, - 31441, - 32619, - 30269, - 27719, - 27837, - 30775, - 28993, - 31138, - 30612, - 24684, - 22708, - 16068, - 19928, - 20126, - 21953, - 23211, - 28494, - 26188, - 23951, - 24754, - 24736, - 25577, - 29102, - 29110, - 27522, - 19385, - 16873, - 21214, - 23084, - 26261, - 26526, - 27353, - 27690, - 27568, - 27285, - 31420, - 32717, - 32171, - 32963, - 28030, - 21955, - 18050, - 15294, - 16700, - 19041, - 18058, - 18263, - 17453, - 21378, - 21958, - 24151, - 26050, - 28487, + 25493, + 25581, + 22976, + 20683, + 17711, + 14507, + 11406, + 14513, + 18501, + 20045, + 21654, + 22668, + 22825, + 21501, + 23500, + 24309, + 22924, + 21018, + 20141, + 18346, + 15740, + 11385, + 18958, + 20802, + 23899, + 24122, + 27467, + 29809, + 28145, + 26917, + 25183, + 22902, + 24628, + 24420, + 19549, + 15383, + 12176, + 14675, + 18365, + 20168, + 20777, + 22350, + 21637, + 25133, + 25056, + 20688, + 20178, + 20894, + 20162, + 18138, + 14937, + 12136, + 18168, + 20933, + 23269, + 24043, + 25454, + 26324, + 26991, + 24458, + 24390, + 24539, + 21874, + 19155, + 17926, + 15882, + 11323, + 14873, + 17586, + 20706, + 20631, + 21503, + 23506, + 18500, + 19792, + 19513, + 20590, + 18444, + 18224, + 16275, + 14483, + 10679, + 21583, + 24535, + 23968, + 27724, + 25991, + 23446, + 25544, + 24100, + 24334, + 23245, + 22070, + 20779, + 19941, + 17214, + 11286, + 15544, + 20653, + 24372, + 24694, + 23769, + 23584, + 21231, + 20813, + 20229, + 21890, + 19371, + 18844, + 17878, + 16220, + 14546, + 21386, + 28025, + 29755, + 29993, + 29200, + 28775, + 29482, + 25609, + 25356, + 24652, + 25298, + 22721, + 19296, + 17669, + 15085, + 16403, + 21719, + 24474, + 28186, + 27576, + 26442, + 27040, + 25082, + 23086, + 20749, + 22115, + 22592, + 19284, + 16998, + 16030, + 19347, + 24326, + 28857, + 31051, + 32112, + 30688, + 28552, + 27681, + 28178, + 26258, + 23581, + 22838, + 20307, + 17606, + 13696, + 14779, + 20922, + 21624, + 25832, + 26997, + 26336, + 24871, + 22794, 24699, - 24666, - 21165, - 18186, - 16587, - 17751, - 17057, - 16760, - 17613, - 18146, - 22973, - 27568, - 27027, - 27588, - 26477, - 24287, - 22264, - 21744, - 18629, - 10697, - 10781, - 10305, - 10866, - 10911, - 11250, - 16099, - 16871, - 20008, - 19524, - 19867, - 19423, - 17982, - 19143, - 15842, - 9125, - 9165, - 9203, - 9601, - 10019, - 12650, - 16540, - 16961, - 16733, - 18453, - 17103, - 18058, - 17872, - 16029, - 14034 + 23104, + 20211, + 19602, + 18237, + 18342, + 14210, + 18134, + 21553, + 22104, + 24718, + 26096, + 26889, + 24829, + 21845, + 21483, + 21212, + 22440, + 19135, + 16412, + 13755, + 12533 ], "directionCounts": [ [ - -488.0, - -336.0, - -302.0, - 416.0, - 368.0 + -148.0, + -184.0, + 576.0, + 90.0, + 36.0 ], [ - -99.0, - -381.0, - -313.0, - -293.0, - -475.0 + 273.0, + 183.0, + 607.0, + 51.0, + 481.0 ], [ - -202.0, - 444.0, - -518.0, - 322.0, - -108.0 + 91.0, + 621.0, + -169.0, + 147.0, + -95.0 ], [ - -441.0, - -447.0, - 471.0, - -159.0, - -73.0 + -193.0, + -399.0, + 229.0, + 573.0, + -357.0 ], [ - -356.0, - -610.0, - -168.0, - -462.0, - 164.0 + 614.0, + 34.0, + 572.0, + -528.0, + -482.0 ], [ - 27.0, - -395.0, - -387.0, - -409.0, - -231.0 + 512.0, + 526.0, + 440.0, + -490.0, + 500.0 ], [ - 346.0, - -684.0, - -462.0, - 270.0, - 352.0 + -388.0, + 604.0, + 428.0, + -188.0, + -412.0 ], [ - -195.0, - -533.0, - -197.0, - -19.0, - 177.0 + 300.0, + 586.0, + -372.0, + -436.0, + -414.0 ], [ - -185.0, - -273.0, - -349.0, - -31.0, - -5.0 + 478.0, + 490.0, + 630.0, + 110.0, + -422.0 ], [ - 144.0, - 298.0, - -514.0, - 186.0, - 564.0 + 395.0, + -381.0, + 487.0, + 235.0, + 301.0 ], [ - 122.0, - 26.0, - -484.0, - -504.0, - 348.0 + -203.0, + -137.0, + 489.0, + 349.0, + 187.0 ], [ - 324.0, - 120.0, - 364.0, - 532.0, - 394.0 + 345.0, + -351.0, + 553.0, + -465.0, + 335.0 ], [ - 436.0, - 342.0, - -374.0, - 442.0, - -350.0 + -505.0, + 103.0, + 217.0, + 551.0, + -351.0 ], [ - 287.0, - 141.0, - 195.0, - 513.0, - -89.0 + 20.0, + 580.0, + -482.0, + 332.0, + 172.0 ], [ - -304.0, - 92.0, - 174.0, - 410.0, - 130.0 + -509.0, + 455.0, + 495.0, + 67.0, + -543.0 ], [ - -215.0, - 47.0, - 17.0, - -415.0, - -37.0 + -262.0, + -288.0, + 120.0, + 488.0, + 376.0 ], [ - 482.0, - -324.0, - -472.0, - -8.0, - -370.0 + 117.0, + 549.0, + 119.0, + 189.0, + -19.0 ], [ - -8.0, - 42.0, - -216.0, - 386.0, - -384.0 + 573.0, + 543.0, + 345.0, + -347.0, + 451.0 ], [ - -318.0, - 298.0, - 304.0, - -86.0, - 302.0 + 434.0, + 408.0, + -58.0, + -252.0, + 250.0 ], [ - 100.0, - 260.0, - -444.0, - -436.0, - 354.0 + -160.0, + 484.0, + 658.0, + -410.0, + -482.0 ], [ - 300.0, - -246.0, - 370.0, - -372.0, - 350.0 + -424.0, + -374.0, + 220.0, + -306.0, + 428.0 ], [ - 260.0, + 68.0, + 560.0, + -48.0, + -464.0, + 368.0 + ], + [ + 170.0, + 286.0, + -330.0, -274.0, + 156.0 + ], + [ + -14.0, + -164.0, + 412.0, + -374.0, + -78.0 + ], + [ + 112.0, 236.0, - -290.0, - -254.0 + 448.0, + 238.0, + -408.0 ], [ - -56.0, - -326.0, - 148.0, - -76.0, - -8.0 + 350.0, + -236.0, + -122.0, + 446.0, + -312.0 ], [ - -154.0, - -450.0, - -220.0, - -268.0, - -214.0 + 309.0, + -139.0, + 609.0, + -415.0, + -395.0 ], [ - 237.0, - -361.0, - 115.0, - 281.0, - -355.0 + 468.0, + 288.0, + 620.0, + 218.0, + -442.0 ], [ - 116.0, - -282.0, - -144.0, - -398.0, - 308.0 + -416.0, + 122.0, + -198.0, + 162.0, + 440.0 ], [ - 53.0, - 69.0, - 319.0, - 487.0, - 161.0 + 44.0, + 42.0, + 208.0, + -302.0, + -496.0 ], [ - -183.0, - 185.0, - -305.0, - -189.0, - -23.0 + -220.0, + -24.0, + 560.0, + 578.0, + 428.0 ], [ - 272.0, - -54.0, - -166.0, - 384.0, - 274.0 + 555.0, + 457.0, + 243.0, + -343.0, + 433.0 ], [ - -386.0, - -318.0, - 328.0, - 320.0, - -48.0 + 575.0, + 213.0, + 421.0, + -193.0, + -317.0 ], [ - 66.0, - -216.0, - -552.0, - -82.0, - -242.0 + 306.0, + 226.0, + 478.0, + -202.0, + -372.0 ], [ - -117.0, - -209.0, - -187.0, - 407.0, - 183.0 + 623.0, + 243.0, + 595.0, + -111.0, + -149.0 ], [ - 125.0, - -167.0, - 25.0, - 241.0, - -205.0 + -264.0, + 222.0, + -160.0, + 140.0, + 174.0 ], [ - -217.0, - -53.0, - -479.0, - -47.0, - 235.0 + 382.0, + -146.0, + 592.0, + 386.0, + -182.0 ], [ - -525.0, - -195.0, + 87.0, + -125.0, + 293.0, -105.0, - -413.0, - 105.0 + -439.0 ], [ - -393.0, - -395.0, - -75.0, - 53.0, - 395.0 + -416.0, + 372.0, + 500.0, + -434.0, + 358.0 ], [ - 151.0, - -255.0, - 469.0, - -173.0, + -185.0, + -179.0, + 149.0, + -159.0, -439.0 ], [ - -351.0, - -407.0, - -417.0, - -425.0, - -289.0 + -114.0, + -428.0, + 596.0, + 354.0, + -410.0 ], [ - -572.0, - -218.0, - -60.0, - 466.0, - 16.0 + -355.0, + 387.0, + -21.0, + 371.0, + -77.0 ], [ - -48.0, - -334.0, - 206.0, - -216.0, - 342.0 + 413.0, + -311.0, + 401.0, + -189.0, + 345.0 ], [ - -358.0, - 52.0, - -284.0, - -106.0, - -382.0 + 244.0, + 638.0, + 402.0, + 594.0, + -122.0 ], [ - -367.0, - 179.0, - -273.0, - -301.0, - 317.0 + 457.0, + 323.0, + 331.0, + -515.0, + 507.0 ], [ - -116.0, - 76.0, - -48.0, - 318.0, - -352.0 + 71.0, + 441.0, + -45.0, + 563.0, + -519.0 ], [ - -185.0, - -249.0, - 169.0, - -315.0, - 323.0 + 53.0, + 165.0, + -271.0, + 63.0, + -505.0 ], [ - 141.0, - 125.0, - 393.0, - -153.0, - 59.0 + 120.0, + -4.0, + 368.0, + -236.0, + -186.0 ], [ - 448.0, - -172.0, - 410.0, - 224.0, - -102.0 + 500.0, + 100.0, + 260.0, + -238.0, + -392.0 ], [ - 274.0, - 132.0, - 344.0, - -264.0, - -40.0 + 357.0, + 387.0, + 565.0, + 193.0, + 155.0 ], [ - -364.0, - -156.0, - -400.0, - 390.0, - -350.0 + 454.0, + 600.0, + 224.0, + -124.0, + -102.0 ], [ - -44.0, - -466.0, - -264.0, - 388.0, - 300.0 + -170.0, + 586.0, + 250.0, + -336.0, + 408.0 ], [ - -422.0, - -30.0, - 254.0, - -454.0, - 370.0 + 117.0, + -379.0, + -401.0, + 399.0, + 503.0 ], [ - -95.0, - -459.0, - -369.0, - 193.0, - -381.0 + 155.0, + 525.0, + -31.0, + 377.0, + -355.0 ], [ - -513.0, - 25.0, - 377.0, - 427.0, - 219.0 + -404.0, + 36.0, + -202.0, + 374.0, + -216.0 ], [ - -543.0, - -197.0, - 63.0, - -385.0, - 121.0 + 466.0, + -432.0, + 414.0, + -14.0, + -228.0 ], [ - 91.0, - -623.0, - 245.0, - -289.0, - 281.0 + 290.0, + 402.0, + 254.0, + -352.0, + -258.0 ], [ - -132.0, - -186.0, - -392.0, - -500.0, - -344.0 + -297.0, + 521.0, + 197.0, + 235.0, + 95.0 ], [ - 266.0, - -184.0, - 190.0, - -214.0, - -442.0 + 419.0, + 273.0, + 549.0, + -419.0, + 393.0 ], [ - -256.0, - 32.0, - -402.0, - 220.0, - 170.0 + -35.0, + -73.0, + 503.0, + -427.0, + 309.0 ], [ - 343.0, - 51.0, - 221.0, - -183.0, - 245.0 + 481.0, + -261.0, + -273.0, + -315.0, + 197.0 ], [ - -28.0, - -216.0, - 238.0, - -204.0, - -38.0 + 437.0, + -11.0, + 333.0, + -279.0, + -431.0 ], [ - 236.0, - 220.0, - 346.0, - 358.0, - -254.0 + -123.0, + -99.0, + 529.0, + -291.0, + -185.0 ], [ - -37.0, - 33.0, - 135.0, - -465.0, - 59.0 + -242.0, + 402.0, + 456.0, + 304.0, + -414.0 ], [ - -95.0, - -199.0, - -399.0, - 455.0, - 369.0 + -403.0, + 253.0, + 369.0, + 535.0, + 307.0 ], [ - 452.0, - -106.0, - -516.0, - -430.0, - 344.0 + 616.0, + 520.0, + 416.0, + -438.0, + -292.0 ], [ - -406.0, - 134.0, - 98.0, - 178.0, - -278.0 + -299.0, + -339.0, + 547.0, + 505.0, + 179.0 ], [ - 346.0, - -316.0, - 260.0, - 102.0, - -484.0 + -98.0, + 562.0, + 220.0, + -526.0, + -148.0 ], [ - -94.0, - -232.0, - -466.0, - -44.0, - -312.0 + 11.0, + -251.0, + 299.0, + 377.0, + -401.0 ], [ - -353.0, - -363.0, - 379.0, - 505.0, - -381.0 + 444.0, + -92.0, + -288.0, + -540.0, + 264.0 ], [ - -665.0, - 109.0, - -233.0, - -353.0, - -381.0 + 513.0, + -27.0, + -77.0, + 267.0, + -457.0 ], [ - -414.0, - -406.0, - 592.0, - -552.0, - -646.0 + 17.0, + -407.0, + -357.0, + -461.0, + -293.0 ], [ - -117.0, - -549.0, - 369.0, - -73.0, - -673.0 + 350.0, + 422.0, + 478.0, + 262.0, + -78.0 ], [ - 214.0, - 236.0, - 458.0, - -132.0, - -206.0 + 311.0, + -175.0, + 465.0, + 43.0, + 199.0 ], [ - 296.0, 142.0, - 452.0, - -30.0, - -270.0 + -188.0, + 354.0, + 118.0, + -534.0 ], [ - -24.0, - 234.0, - 296.0, - -70.0, - -314.0 + 472.0, + 200.0, + 386.0, + -240.0, + -544.0 ], [ - -224.0, - -94.0, - -346.0, - -58.0, - 476.0 + -64.0, + 432.0, + 40.0, + 290.0, + -432.0 ], [ - 197.0, - 431.0, - -423.0, - -315.0, - 563.0 + -262.0, + -188.0, + -194.0, + 164.0, + -208.0 ], [ - 106.0, - 18.0, - -396.0, - -72.0, - -456.0 + 390.0, + -260.0, + 90.0, + 212.0, + -366.0 ], [ - -389.0, - -97.0, - 329.0, - -365.0, - -461.0 + 463.0, + -343.0, + 111.0, + -409.0, + -517.0 ], [ - -369.0, - 211.0, - 197.0, - -393.0, - 285.0 + 45.0, + 517.0, + 285.0, + 423.0, + 481.0 ], [ - -397.0, - 115.0, - 61.0, - 57.0, - 361.0 + -206.0, + 48.0, + -108.0, + 504.0, + -454.0 ], [ - -463.0, - 27.0, - -205.0, - -63.0, - -395.0 + 194.0, + -284.0, + 380.0, + -12.0, + 276.0 ], [ - 27.0, - -127.0, - 183.0, - -391.0, - -349.0 + 550.0, + 352.0, + 494.0, + -26.0, + -466.0 ], [ -273.0, - -459.0, - 117.0, - -29.0, - 71.0 - ], - [ - 28.0, - -368.0, - 410.0, - -152.0, - -130.0 + 469.0, + 209.0, + -61.0, + 395.0 ], [ - -532.0, - -294.0, - -482.0, - -218.0, - 466.0 + -409.0, + 463.0, + 577.0, + -51.0, + -539.0 ], [ - 264.0, - -606.0, - 54.0, - 210.0, - -348.0 + -7.0, + 89.0, + 107.0, + -485.0, + -205.0 ], [ - 108.0, - -526.0, - -458.0, - -432.0, - -516.0 + -251.0, + 435.0, + 7.0, + -597.0, + 369.0 ], [ - 259.0, - -39.0, - -115.0, - -275.0, - -473.0 + 473.0, + -273.0, + 329.0, + 117.0, + -127.0 ], [ - 131.0, - -57.0, - 29.0, - -273.0, - -29.0 + 570.0, + 408.0, + 586.0, + 114.0, + 272.0 ], [ - 362.0, - -22.0, - -254.0, - -158.0, - 578.0 + 38.0, + 124.0, + 286.0, + 244.0, + -328.0 ], [ - -113.0, - 527.0, - 117.0, - -185.0, - 659.0 + 323.0, + 61.0, + 47.0, + -247.0, + 5.0 ], [ - -173.0, - 139.0, - -411.0, - -163.0, - 191.0 + -208.0, + 260.0, + -156.0, + -224.0, + 182.0 ], [ - 54.0, - 240.0, - 454.0, - -8.0, - 456.0 + -507.0, + 267.0, + 367.0, + 33.0, + -527.0 ], [ - -388.0, - 110.0, - -212.0, - 500.0, - 506.0 + 28.0, + 444.0, + 94.0, + -38.0, + 274.0 ], [ - -317.0, - 121.0, - 379.0, - 81.0, - 485.0 + -399.0, + 169.0, + 43.0, + -497.0, + -7.0 ], [ - -546.0, - 118.0, - 552.0, - 566.0, - -550.0 + -548.0, + -492.0, + 422.0, + 446.0, + -522.0 ], [ - 264.0, - -190.0, - -422.0, - -550.0, - 288.0 + 345.0, + 245.0, + -87.0, + -445.0, + 471.0 ], [ - 426.0, - -156.0, - -464.0, - -444.0, - -472.0 + 485.0, + 529.0, + -319.0, + 413.0, + 313.0 ], [ - -75.0, - 255.0, - -399.0, - 91.0, - -213.0 + -256.0, + -400.0, + -288.0, + 442.0, + -422.0 ], [ - -271.0, - -173.0, - 373.0, - 407.0, - -397.0 + 502.0, + 200.0, + -156.0, + -540.0, + -488.0 ], [ - -173.0, - -283.0, - -183.0, - 101.0, - 303.0 + -448.0, + 356.0, + 210.0, + 270.0, + -454.0 ], [ - -375.0, - -41.0, - -335.0, - -193.0, - -489.0 + -471.0, + 65.0, + 285.0, + 321.0, + -517.0 ], [ - 89.0, - -125.0, - 477.0, - -567.0, - -7.0 + -452.0, + -152.0, + 218.0, + -606.0, + 352.0 ], [ - 17.0, - 257.0, - -223.0, - -343.0, - 289.0 + 60.0, + 378.0, + 180.0, + -582.0, + 186.0 ], [ + 182.0, + 288.0, 306.0, - 236.0, - -392.0, - -38.0, - -256.0 + 310.0, + -580.0 ], [ - 591.0, - 363.0, - 27.0, - -373.0, - 83.0 + -347.0, + -331.0, + 249.0, + -379.0, + 19.0 ], [ - -338.0, - 134.0, - -18.0, - 206.0, - 4.0 + -388.0, + 236.0, + -298.0, + 132.0, + -140.0 ], [ - 231.0, - -189.0, - 33.0, - -61.0, - -267.0 + -453.0, + -109.0, + -21.0, + -17.0, + 253.0 ], [ - -413.0, - 163.0, - -219.0, - 461.0, - 267.0 + 417.0, + -415.0, + -37.0, + -67.0, + -11.0 ], [ - -282.0, - -318.0, - -212.0, - 26.0, - 494.0 + -158.0, + 94.0, + -32.0, + -316.0, + 506.0 ], [ - 339.0, - 137.0, - -475.0, + 477.0, + -303.0, 61.0, - -437.0 + 347.0, + -297.0 ], [ - -409.0, - -1.0, - -307.0, - 37.0, - 231.0 + 437.0, + 283.0, + -63.0, + -91.0, + 311.0 ], [ - -391.0, - -457.0, - 169.0, - 175.0, - 167.0 + 562.0, + 98.0, + -82.0, + 486.0, + 486.0 ], [ - 374.0, - 198.0, - 302.0, - -486.0, - 158.0 + -403.0, + 147.0, + 201.0, + -541.0, + -517.0 ], [ - -270.0, - -232.0, - 122.0, - -414.0, - -54.0 + -168.0, + 146.0, + 182.0, + -438.0, + -512.0 ], [ - -29.0, - 411.0, - -341.0, - -457.0, - -391.0 + -325.0, + -269.0, + 163.0, + 397.0, + -101.0 ], [ - 295.0, - -309.0, - 307.0, - -247.0, - 441.0 + 319.0, + 25.0, + 361.0, + 317.0, + -303.0 ], [ - -306.0, - 130.0, - -202.0, - -146.0, - 204.0 + -394.0, + -152.0, + 222.0, + 68.0, + 498.0 ], [ - 79.0, - 183.0, - -283.0, - -533.0, - 491.0 + -415.0, + 97.0, + -143.0, + -515.0, + -383.0 ], [ - 496.0, - 438.0, - -112.0, - 74.0, - 518.0 + -241.0, + 397.0, + 21.0, + -145.0, + -511.0 ], [ - 536.0, - 258.0, - 172.0, - 460.0, - 596.0 + -419.0, + -473.0, + -91.0, + -503.0, + 459.0 ], [ - -326.0, - -354.0, - -190.0, - -458.0, - -206.0 + -492.0, + -106.0, + 32.0, + 112.0, + -506.0 ], [ - 348.0, - -270.0, - 270.0, - 14.0, - 40.0 + -316.0, + 340.0, + -248.0, + 470.0, + 358.0 ], [ - -115.0, - -183.0, - -121.0, - -127.0, - 359.0 + 229.0, + 195.0, + -259.0, + 49.0, + -499.0 ], [ - -149.0, - 245.0, - 563.0, - 561.0, - 299.0 + 185.0, + -13.0, + 13.0, + 173.0, + 213.0 ], [ 117.0, - -43.0, - -381.0, - 621.0, - 305.0 + 131.0, + 345.0, + 459.0, + -315.0 ], [ - -402.0, - -52.0, - -410.0, - -354.0, - -198.0 + -449.0, + -265.0, + -7.0, + -439.0, + 521.0 ], [ - 336.0, - -150.0, - -42.0, - 32.0, - -156.0 + -522.0, + -506.0, + -34.0, + -592.0, + -560.0 ], [ - -157.0, - 387.0, - -207.0, - -431.0, - -283.0 + 458.0, + 66.0, + -58.0, + 606.0, + -596.0 ], [ - 441.0, - 37.0, - 297.0, - 649.0, - 197.0 + -369.0, + -97.0, + -143.0, + 315.0, + -413.0 ], [ - 148.0, - -288.0, - -96.0, - 332.0, - 474.0 + 328.0, + -222.0, + 96.0, + -352.0, + 352.0 ], [ - -491.0, - -59.0, - 293.0, - 127.0, - -443.0 + 104.0, + -184.0, + -242.0, + 36.0, + 218.0 ], [ - 155.0, - -229.0, - -245.0, - -275.0, - -65.0 + -94.0, + -292.0, + -482.0, + -28.0, + 314.0 ], [ - 416.0, - 44.0, - 522.0, - -454.0, - -60.0 + -452.0, + 58.0, + -228.0, + 512.0, + -328.0 ], [ - 437.0, - 125.0, - -117.0, - -195.0, - 25.0 + 543.0, + -439.0, + -251.0, + -7.0, + 501.0 ], [ - 514.0, - -66.0, - 378.0, - -272.0, - 122.0 + -92.0, + 194.0, + -210.0, + 402.0, + -514.0 + ], + [ + 358.0, + -146.0, + -142.0, + -356.0, + 470.0 ], [ - -365.0, - -191.0, - -29.0, -459.0, - 301.0 + 41.0, + -433.0, + 411.0, + -431.0 ], [ - 182.0, - 380.0, - -194.0, - -282.0, - -438.0 + -511.0, + -327.0, + -317.0, + 269.0, + 183.0 ], [ - -331.0, - 151.0, - 149.0, - -95.0, - 315.0 + -109.0, + -385.0, + -433.0, + 447.0, + -451.0 ], [ - -268.0, - 176.0, - -370.0, - 466.0, - -466.0 + -176.0, + -72.0, + -488.0, + 412.0, + -108.0 ], [ - -278.0, - -178.0, - -444.0, - -586.0, - 242.0 + -113.0, + 347.0, + -241.0, + -141.0, + 377.0 ], [ - -411.0, - -243.0, - -159.0, - 555.0, - 357.0 + -516.0, + 290.0, + -182.0, + 486.0, + -380.0 ], [ - 213.0, - -353.0, - 233.0, - 355.0, - 407.0 + -407.0, + 339.0, + -431.0, + -189.0, + -15.0 ], [ - 294.0, - 176.0, - -378.0, - -350.0, - 412.0 + -537.0, + 259.0, + -383.0, + -57.0, + -419.0 ], [ - 171.0, - -19.0, - -247.0, 77.0, - -249.0 + 323.0, + 1.0, + 23.0, + -147.0 ], [ - -71.0, - -309.0, - -311.0, - -201.0, - -249.0 + -479.0, + 347.0, + -519.0, + 389.0, + 389.0 ], [ - -25.0, - -243.0, - -331.0, - -351.0, - -57.0 + -114.0, + -174.0, + -506.0, + 422.0, + 234.0 ], [ - -16.0, - 148.0, - 114.0, - 228.0, - -344.0 + 252.0, + -278.0, + -394.0, + -184.0, + 452.0 ], [ - 134.0, - -134.0, - 24.0, - 292.0, - -402.0 + 357.0, + -551.0, + -313.0, + 489.0, + -311.0 ], [ - 33.0, - 303.0, - 527.0, - 99.0, - -205.0 + 509.0, + 285.0, + -429.0, + -331.0, + -489.0 ], [ - 89.0, - -99.0, - 489.0, - -257.0, - -245.0 + -119.0, + -281.0, + -429.0, + -471.0, + 539.0 ], [ - -434.0, - 298.0, - -468.0, - -482.0, - 528.0 + -13.0, + 299.0, + -437.0, + -269.0, + 185.0 ], [ - 392.0, - -196.0, + -460.0, + -512.0, -412.0, - -52.0, - -414.0 + -318.0, + -488.0 ], [ - 45.0, - -281.0, - 441.0, - 201.0, - -73.0 + -447.0, + 61.0, + -371.0, + 479.0, + 441.0 ], [ - 363.0, - -29.0, - -323.0, - 503.0, - -561.0 + 382.0, + 456.0, + 100.0, + -22.0, + 514.0 ], [ - 7.0, - -263.0, - -57.0, - 567.0, - -257.0 + 57.0, + -105.0, + -197.0, + 429.0, + 411.0 ], [ - -130.0, - -152.0, - 540.0, - -178.0, - -226.0 + 347.0, + -535.0, + -579.0, + -497.0, + -511.0 ], [ - 100.0, - 328.0, - -12.0, - -416.0, - -428.0 + -325.0, + 11.0, + -405.0, + 555.0, + -441.0 ], [ - 345.0, - 141.0, - -219.0, - -193.0, - 351.0 + -123.0, + 193.0, + -419.0, + 81.0, + -61.0 ], [ - -124.0, - 228.0, - -2.0, - 378.0, - 306.0 + 264.0, + -168.0, + -356.0, + 206.0, + -372.0 ], [ - 246.0, - 0.0, - -176.0, + -38.0, + -226.0, -322.0, - 426.0 - ], - [ - -19.0, - 49.0, - -403.0, - -289.0, - -7.0 - ], - [ - -339.0, - -233.0, - -391.0, - -19.0, - -415.0 + -302.0, + 476.0 ], [ - 63.0, - -345.0, - -211.0, - -535.0, - 287.0 + -559.0, + -537.0, + -269.0, + -301.0, + -423.0 ], [ - 252.0, - 218.0, - 460.0, - 112.0, - -280.0 + 50.0, + -66.0, + -650.0, + -378.0, + 400.0 ], [ - -322.0, - -350.0, - -266.0, - 490.0, - -40.0 + 235.0, + -117.0, + -317.0, + -29.0, + 181.0 ], [ - 88.0, - 370.0, - 398.0, - 534.0, - -464.0 + 386.0, + 204.0, + 14.0, + -2.0, + -368.0 ], [ - -122.0, - 342.0, - -400.0, - 380.0, - 456.0 + 108.0, + -408.0, + -478.0, + -108.0, + 244.0 ], [ - 16.0, - 268.0, - 132.0, - -222.0, - -400.0 + -144.0, + -280.0, + -246.0, + 502.0, + -42.0 ], [ + -514.0, + -372.0, 372.0, - -108.0, - -292.0, - -232.0, - -574.0 + 172.0, + 324.0 ], [ - 362.0, - -306.0, - 80.0, - -518.0, - -98.0 + -279.0, + -501.0, + -569.0, + -175.0, + 461.0 ], [ - 203.0, - -309.0, - -1.0, - 441.0, - -229.0 + -66.0, + 254.0, + -196.0, + -234.0, + -364.0 ], [ - -67.0, - -397.0, -39.0, - -141.0, - 301.0 + -383.0, + -161.0, + 209.0, + -433.0 ], [ - -231.0, - -257.0, - 475.0, - 469.0, - 7.0 + 411.0, + -505.0, + -125.0, + -69.0, + -449.0 ], [ - 33.0, - -211.0, - -195.0, - -141.0, - 227.0 + 378.0, + 30.0, + -458.0, + 382.0, + 394.0 ], [ - -43.0, - -73.0, - 83.0, - 85.0, - 371.0 + 254.0, + -184.0, + -478.0, + 470.0, + 464.0 ], [ - 62.0, - 172.0, - 126.0, - 28.0, - -272.0 + -436.0, + -304.0, + -558.0, + -496.0, + 118.0 ], [ - 392.0, - 172.0, - -144.0, - 284.0, - -84.0 + -185.0, + 87.0, + -417.0, + 47.0, + 127.0 ], [ - 118.0, - 244.0, - -194.0, - -134.0, - -70.0 + 253.0, + -149.0, + -195.0, + -21.0, + -191.0 ], [ - -172.0, - 270.0, - 444.0, - 266.0, - 252.0 + 353.0, + -565.0, + 129.0, + 369.0, + 417.0 ], [ - -180.0, - 486.0, - -112.0, - -314.0, - 276.0 + -33.0, + -109.0, + -53.0, + 239.0, + -249.0 ], [ - 644.0, - 174.0, - -618.0, - 580.0, - 212.0 + 219.0, + -465.0, + -273.0, + 477.0, + 149.0 ], [ - 561.0, - 145.0, - 253.0, - 235.0, - 333.0 + 380.0, + -350.0, + 22.0, + 446.0, + 56.0 ], [ - 444.0, - 208.0, - -372.0, - -20.0, - -74.0 + -334.0, + -328.0, + 350.0, + -242.0, + 342.0 ], [ - 335.0, - 85.0, - -201.0, - 105.0, - -211.0 + 544.0, + 152.0, + -414.0, + -450.0, + -400.0 ], [ - 231.0, - -297.0, - -75.0, - -533.0, - -493.0 + 47.0, + -399.0, + 215.0, + -419.0, + -303.0 ], [ - -493.0, - -343.0, - 507.0, - -589.0, - -467.0 + 344.0, + -254.0, + -578.0, + -238.0, + 414.0 ], [ - -2.0, - -336.0, - 504.0, - 320.0, - 22.0 + 368.0, + -484.0, + 88.0, + 454.0, + 174.0 ], [ - -320.0, - -226.0, - -412.0, - 250.0, - 204.0 + 246.0, + -52.0, + -690.0, + 526.0, + -130.0 ], [ - 58.0, - -10.0, - 530.0, - -392.0, - -168.0 + -555.0, + -491.0, + -473.0, + 227.0, + 347.0 ], [ - -419.0, - 69.0, - -75.0, - -151.0, - 327.0 + 6.0, + -524.0, + -296.0, + -154.0, + -112.0 ], [ - -52.0, - -24.0, - 404.0, - 254.0, - 292.0 + 411.0, + 411.0, + 51.0, + 327.0, + 523.0 ], [ - 182.0, - -90.0, - -74.0, - 64.0, - 296.0 + 335.0, + -409.0, + -117.0, + -323.0, + 187.0 ], [ - -294.0, - 288.0, - 348.0, - 396.0, - -108.0 + 68.0, + 152.0, + 102.0, + -486.0, + -440.0 ], [ - -136.0, - -216.0, - -170.0, - -470.0, - -286.0 + 215.0, + 51.0, + -423.0, + 169.0, + -197.0 ], [ - -218.0, - 414.0, - -66.0, - 266.0, - 44.0 + -428.0, + -480.0, + -60.0, + 396.0, + 34.0 ], [ - 632.0, - 118.0, - 12.0, - -592.0, - 216.0 + -166.0, + 158.0, + 328.0, + -30.0, + -438.0 ], [ - 9.0, - 303.0, - 17.0, - -351.0, - -419.0 + 0.0, + 342.0, + -468.0, + -140.0, + 200.0 ], [ - 140.0, - 40.0, - 146.0, - -380.0, - -186.0 + 380.0, + 78.0, + -342.0, + -306.0, + 328.0 ], [ - 119.0, - -27.0, - -179.0, - 159.0, - 233.0 + -446.0, + -140.0, + 338.0, + -388.0, + -330.0 ], [ - -180.0, + 424.0, -228.0, - 294.0, - -224.0, - -254.0 + -552.0, + 256.0, + -308.0 ], [ - -192.0, - -412.0, - 376.0, - 412.0, - -530.0 + 71.0, + -399.0, + -419.0, + -43.0, + 365.0 ], [ - -482.0, - 348.0, - -334.0, - -278.0, - 164.0 + -392.0, + -354.0, + 62.0, + 392.0, + -372.0 ], [ + -280.0, + -382.0, -528.0, - -118.0, - -506.0, - 38.0, - 212.0 + 288.0, + -190.0 ], [ - -551.0, - -141.0, - 345.0, - -359.0, - -521.0 + -424.0, + -534.0, + -498.0, + 320.0, + -198.0 ], [ - 126.0, - 170.0, - 528.0, - 520.0, - 296.0 + -134.0, + 250.0, + -664.0, + -404.0, + 394.0 ], [ - 452.0, - 318.0, - 98.0, - -86.0, - -160.0 + -125.0, + -471.0, + 231.0, + -251.0, + -383.0 ], [ - 48.0, - -26.0, - 180.0, - 458.0, - 34.0 + -276.0, + -484.0, + 280.0, + 264.0, + -172.0 ], [ + 134.0, + 70.0, 270.0, - 382.0, - -164.0, - -272.0, - 232.0 - ], - [ - 483.0, - 481.0, - 373.0, - -63.0, - 375.0 + -74.0, + 84.0 ], [ - 462.0, - 372.0, - -206.0, - 22.0, - 406.0 + -57.0, + 293.0, + 95.0, + -177.0, + -421.0 ], [ - -251.0, - 371.0, - -233.0, - -137.0, - 513.0 + -464.0, + -552.0, + -400.0, + -342.0, + 438.0 ], [ - 555.0, - -77.0, - -421.0, - -399.0, - 427.0 + -59.0, + 429.0, + 241.0, + 565.0, + -381.0 ], [ - -65.0, - 11.0, - -391.0, - -323.0, - 255.0 + -574.0, + 104.0, + 42.0, + 92.0, + 432.0 ], [ - 406.0, - -92.0, - -204.0, - 326.0, - -436.0 + -400.0, + -130.0, + -588.0, + 366.0, + -474.0 ], [ - 297.0, - -213.0, - -153.0, - 437.0, - 109.0 + -390.0, + -234.0, + 278.0, + -210.0, + -70.0 ], [ - -146.0, - -312.0, - 336.0, - -530.0, - 272.0 + 203.0, + -11.0, + 101.0, + -375.0, + 137.0 ], [ - 198.0, - -360.0, - -590.0, - 222.0, - -430.0 + 47.0, + -3.0, + -35.0, + -37.0, + -203.0 ], [ - 118.0, - -460.0, - 72.0, - -534.0, - 542.0 + -449.0, + -495.0, + -159.0, + -133.0, + 393.0 ], [ - 516.0, - -252.0, - 296.0, - -50.0, - 198.0 + 216.0, + -312.0, + -690.0, + 316.0, + -370.0 ], [ - -159.0, - 259.0, - 431.0, - 479.0, - 601.0 + -584.0, + -630.0, + 192.0, + -526.0, + -340.0 ], [ - 372.0, - 566.0, - -142.0, - -342.0, - 510.0 + -592.0, + 210.0, + -334.0, + -36.0, + 56.0 ], [ - -112.0, - 96.0, - 390.0, - 498.0, - -342.0 + 288.0, + -532.0, + -634.0, + 448.0, + 314.0 ], [ - 465.0, - 555.0, - 125.0, - -353.0, - 443.0 + -66.0, + -450.0, + 280.0, + 320.0, + -320.0 ], [ - -71.0, - 387.0, - 451.0, - -157.0, - 51.0 + -8.0, + 36.0, + -174.0, + -410.0, + -350.0 ], [ - 43.0, - 271.0, - -385.0, - -377.0, - -3.0 + 295.0, + -373.0, + -215.0, + 147.0, + 343.0 ] ], "minimalDistances": [ diff --git a/som/__init__.py b/som/__init__.py deleted file mode 100644 index 8a8b54f..0000000 --- a/som/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -from .error import * -from .neighborhood import * -from .som import * -from .topology import * \ No newline at end of file diff --git a/som/error.py b/som/error.py deleted file mode 100644 index 1a97516..0000000 --- a/som/error.py +++ /dev/null @@ -1,51 +0,0 @@ -import numpy as np -from abc import ABC, abstractmethod - - -class Error(ABC): - """ - Class representing a generic error in the context of a Self-Organizing Map (SOM). - """ - def __init__(self): - self.name = self.__class__.__name__ - - def __call__(self, *args) -> float: - return self._calcError(*args) - - @abstractmethod - def _calcError(self, *args) -> float: - pass - - -class Topological(Error): - """ - Class representing a Topological error in a Self-Organizing Map (SOM). This error is computed - based on the topological structure of the SOM. - """ - def __init__(self): - super().__init__() - - def _calcError(self, bestMatchingIndices: np.ndarray, secondMatchingIndices: np.ndarray) -> float: - """ - Compute the Topological error. The error is calculated as the mean distance between - the best matching indices and the second best matching indices, minus one. - """ - distance = np.sum(np.abs(bestMatchingIndices - secondMatchingIndices), axis=-1) - 1 - return np.mean(distance) - - -class Quantazation(Error): - """ - Class representing a Quantization error in a Self-Organizing Map (SOM). This error is computed - based on the discrepancy between the best matching units and the original data. - """ - def __init__(self): - super().__init__() - - def _calcError(self, bestMatchingUnits: np.ndarray, dataBatch: np.ndarray) -> float: - """ - Compute the Quantization error. The error is calculated as the mean Euclidean distance - between the best matching units and the original data batch. - """ - distance = np.linalg.norm(bestMatchingUnits - dataBatch, axis=-1) - return np.mean(distance) \ No newline at end of file diff --git a/som/neighborhood.py b/som/neighborhood.py deleted file mode 100644 index db7610a..0000000 --- a/som/neighborhood.py +++ /dev/null @@ -1,101 +0,0 @@ -import numpy as np -from abc import ABC, abstractmethod - - -class NeighborhoodFunction(ABC): - """ - Abstract base class for neighborhood functions, such as Gaussian, Bubble, and Mexican Hat. - """ - def __init__(self, scale: float) -> None: - self.name = self.__class__.__name__ - self.scale = scale - - def __call__(self, distance: np.ndarray) -> np.ndarray: - """ - Calls the _compute method to compute the value of the neighborhood function for the input distance and radius. - """ - return self._compute(distance) - - @abstractmethod - def _compute(self, distance: np.ndarray) -> np.ndarray: - """ - Computes the value of the neighborhood function for the input distance and radius. - """ - pass - - -class GuassianNeighborhood(NeighborhoodFunction): - def __init__(self, scale: float) -> None: - super().__init__(scale) - - def _compute(self, distance: np.ndarray) -> np.ndarray: - """ - Computes the value of a Gaussian neighborhood function for a given distance and radius. - """ - return np.exp(-distance ** 2 / (2 * self.scale ** 2)) - - -class BubbleNeighborhood(NeighborhoodFunction): - def __init__(self, scale: float) -> None: - super().__init__(scale) - - def _compute(self, distance: np.ndarray) -> np.ndarray: - """ - Computes the value of a Bubble neighborhood function for a given distance and radius. - """ - return np.where(distance <= self.scale, 1, 0) - - -class MexicanHatNeighborhood(NeighborhoodFunction): - def __init__(self, scale: float) -> None: - super().__init__(scale) - - def _compute(self, distance: np.ndarray) -> np.ndarray: - """ - Computes the value of a Mexican hat neighborhood function for a given distance and radius. - """ - return (1 - (distance / self.scale) ** 2) * np.exp(-distance ** 2 / (2 * self.scale ** 2)) - - -class LinearNeighborhood(NeighborhoodFunction): - def __init__(self, scale: float) -> None: - super().__init__(scale) - - def _compute(self, distance: np.ndarray) -> np.ndarray: - """ - Computes the value of a linear neighborhood function for a given distance and radius. - """ - return np.where(distance <= self.scale, 1 - distance / self.scale, 0) - - -class CosineNeighborhood(NeighborhoodFunction): - def __init__(self, scale: float) -> None: - super().__init__(scale) - - def _compute(self, distance: np.ndarray) -> np.ndarray: - """ - Computes the value of a cosine neighborhood function for a given distance and radius. - """ - return np.cos(np.pi * distance / self.scale) - - -class CauchyNeighborhood(NeighborhoodFunction): - def __init__(self, scale: float) -> None: - super().__init__(scale) - - def _compute(self, distance: np.ndarray) -> np.ndarray: - """ - Computes the value of a Cauchy neighborhood function for a given distance and radius. - """ - return 1 / (1 + (distance / self.scale) ** 2) - - -class EpanechnikovNeighborhood(NeighborhoodFunction): - def __init__(self, scale: float) -> None: - super().__init__(scale) - - def _compute(self, distance: np.ndarray) -> np.ndarray: - """ - Computes the value of an Epanechnikov neighborhood function for a given distance and radius. - """ - return np.where(distance <= self.scale, 1 - (distance / self.scale) ** 2, 0) \ No newline at end of file diff --git a/som/som.py b/som/som.py deleted file mode 100644 index bb564e6..0000000 --- a/som/som.py +++ /dev/null @@ -1,302 +0,0 @@ -import numpy as np -from numpy.typing import ArrayLike -from data.dataLoader import DataLoader, DataSet -from utility.progressbar import Progressbar -from .neighborhood import NeighborhoodFunction -from nn.scheduler import Scheduler -from importlib import import_module -from .observable import SOMobservable -from .error import Topological, Quantazation -from .topology import Topology - - -class SOM(object): - """ - Main code for SOM - """ - def __init__(self, learningRate: float, gridSteps: int = 1, decreaseEvery: int = None, growth: bool = False) -> None: - self.name = self.__class__.__name__ - - self.topology = None - self.gridSteps = gridSteps - self.decreaseEvery = decreaseEvery - self.growth = growth - self._initedWeights = False - - # this holds counts per neuron per class - self.counts = [] - - # parameters for training - self.learningRate = learningRate - self._scheduler = None - - # error estimation for training - self._topoError = Topological() - self._quantError = Quantazation() - - # neighborhood - self.neighborhoodFunc = None - - @property - def qualifiedName(self) -> tuple: - """ - This is needed for saving the SOM as a json file - """ - return self.__class__.__module__, self.__class__.__name__ - - def toDict(self) -> dict: - """ - This converts all values and features of the SOM into a dict - Than it can be saved using built-in functions as json file - """ - saveDict = {} - saveDict['numFeatures'] = self.topology.numFeatures - saveDict['gridSize'] = self.topology.gridSize - saveDict['topology'] = self.topology.name - saveDict['initedWeights'] = self._initedWeights - - saveDict['learningRate'] = self.learningRate - saveDict['gridSteps'] = self.gridSteps - saveDict['counts'] = [] - for item in self.counts: - saveDict['counts'].append(item.tolist()) - if self._scheduler is not None: - saveDict['scheduler'] = self._scheduler.name - saveDict['neighborhoodFunc'] = self.neighborhoodFunc.name - saveDict['scale'] = self.neighborhoodFunc.scale - saveDict['weights'] = self.topology.weights.tolist() - - saveDict['movementCounts'] = self.topology._movementCounts.tolist() - saveDict['directionCounts'] = self.topology._directionCounts.tolist() - saveDict['minimalDistances'] = self.topology._minimalDistances.tolist() - - return saveDict - - @classmethod - def fromDict(cls, loadDict: dict) -> object: - """ - This instantiates a new SOM from a dict, which was loaded from a json file - """ - instance = cls(loadDict['learningRate'], loadDict['gridSteps']) - - Module = import_module('som.neighborhood') # dynamically import module - Class = getattr(Module, loadDict['neighborhoodFunc']) # get class from imported module - instance.neighborhoodFunc = Class(loadDict['scale']) - - Module = import_module('som.topology') # dynamically import module - Class = getattr(Module, loadDict['topology']) # get class from imported module - instance.topology = Class(loadDict['gridSize'], loadDict['numFeatures']) - instance._initedWeights = loadDict['initedWeights'] - - instance.topology.weights = np.array(loadDict['weights']) - instance.topology._movementCounts = np.array(loadDict['movementCounts']) - instance.topology._directionCounts = np.array(loadDict['directionCounts']) - instance.topology._minimalDistances = np.array(loadDict['minimalDistances']) - for item in loadDict['counts']: - instance.counts.append(item) - - return instance - - def setComponent(self, component: NeighborhoodFunction | Scheduler | Topology) -> None: - """ - this allows setting a neighborhood functions and if the user - wishes also a learning rate schdeuler - """ - if isinstance(component, NeighborhoodFunction): - self.neighborhoodFunc = component - elif isinstance(component, Scheduler): - self._scheduler = component - elif isinstance(component, Topology): - self.topology = component - else: - raise TypeError("the provided component is not a valid one") - - def initWeights(self, data: DataLoader | np.ndarray) -> None: - # setting up the weight grid/neurons - self.topology.initWeights(data) - self._initedWeights = True - - def _findBestMatch(self, dataBatch: np.ndarray) -> np.ndarray: - """ - Find the best matching unit (BMU) for each data point in the batch. - """ - batchSize, numFeatures = dataBatch.shape - - # Repeat data points and tile weights - repeatedData = np.repeat(dataBatch, self.topology.numNeurons, axis=0) - tiledWeights = np.tile(self.topology.weights, (batchSize, 1)) - - # Compute Euclidean distances between data points and weights - norms = np.linalg.norm(tiledWeights - repeatedData, axis=1).reshape(batchSize, -1) - - # Partition distances so the two smallest distances are at the beginning - partitioned = np.argpartition(norms, 2, axis=1) - - # Extract the indices of the best and second best matching units - bestMatches, secondMatches = partitioned[:, 0], partitioned[:, 1] - - return bestMatches, secondMatches - - def _findNeighbors(self, bestMatches: ArrayLike) -> np.ndarray: - """ - Given a list of best matching units (BMUs) on a grid, this function finds the indices of their neighboring units - within a certain number of steps from them. - """ - batchSize = len(bestMatches) - uu, vv = np.unravel_index(bestMatches, self.topology.gridSize) - indices = np.vstack((uu, vv)).T - - # broadcasting arrays to match each other - tiledGrid = np.tile(self.topology.gridIndices, (batchSize, 1)) - repeatedIndices = np.repeat(indices, self.topology.numNeurons, axis=0) - - # distances understood as steps on a grid - distances = np.sum(abs(tiledGrid - repeatedIndices), axis=-1).reshape(batchSize, -1) - - # the 'topological correction' is needed to find diagonal neighbors on a hexagonal grid - inputVectors, neighbors = np.where(distances <= self.gridSteps + self.topology.stepCorrection) - - return inputVectors, neighbors - - def _adjustWeights(self, dataBatch: ArrayLike) -> None: - """ - Adjusts the weights of a self-organizing map (SOM) given a batch of input vectors. - """ - - # Find the bestMatches for each input vector in the batch - bestMatches, secondMatches = self._findBestMatch(dataBatch) - - # calculating and updating errors - topoError = self._topoError(bestMatches, secondMatches) - quantError = self._quantError(self.topology.weights[bestMatches], dataBatch) - self.metrics.update('topologyError', topoError, len(dataBatch) * self.topology.numNeurons) - self.metrics.update('quantazationError', quantError, len(dataBatch)) - - # Find the indices of the neighboring neurons - inputVectors, neighbors = self._findNeighbors(bestMatches) - - # Adjust the weights of the winning neuron and its neighbors - deltaWeights = self.learningRate * (dataBatch - self.topology.weights[bestMatches]) - self.topology[bestMatches] += deltaWeights - - # Calculate the Gaussian neighborhood function for each neighbor - neighborIndices = self.topology.gridIndices[neighbors] - bestMatchIndices = self.topology.gridIndices[bestMatches[inputVectors]] - topologicalDistances = np.linalg.norm(neighborIndices - bestMatchIndices, axis=-1) - - # finding the neighbors and determining weight changes - neighborhoodWeights = self.neighborhoodFunc(topologicalDistances) - neighborhoodWeights = np.repeat(neighborhoodWeights,self.topology.numFeatures).reshape(-1,self.topology.numFeatures) - - # updating neighborhood neurons - deltaNeighbors = self.learningRate * neighborhoodWeights * (dataBatch[inputVectors] - self.topology.weights[neighbors]) - self.topology[neighbors] += deltaNeighbors - - # counting neuron movements - self.topology.countMovements(bestMatches, neighbors, deltaWeights, deltaNeighbors) - - def train(self, data: DataLoader | np.ndarray, epochs: int, batchSize: int = None) -> None: - """ - Trains the self-organizing map using the given data for the specified number of epochs and steps. - """ - if self._initedWeights is False: - self.initWeights(data) - - # testing input arguments - self._checkInputDataType(data, batchSize) - - # converting numpy arrays into a DataLoader - if isinstance(data, DataLoader) is False: - data = DataSet(data) - data = DataLoader(data, self._batchSize) - - self.metrics = SOMobservable(epochs) - # beginn training - for i in range(epochs): - length = len(data) - bar = Progressbar(f'epoch {str(i+1).zfill(len(str(epochs)))}/{epochs}', length, 65) # setting up a progress bar - - # running over data batches - for item in data: - self._adjustWeights(item['data']) - bar.step() - - # making a step with LR scheduler - if self._scheduler is not None: - self._scheduler.step() - - # growing the topology, this code is ugly - if self.gridSteps > 1 and self.decreaseEvery: - if i > 0 and i % self.decreaseEvery == 0: - self.gridSteps -= 1 - if i > 0 and i % 5 == 0 and self.growth: - self.topology.grow() - - # updating and printing training metrics - self.metrics.update('learningRate', self.learningRate) - self.metrics.update('gridSteps', self.gridSteps) - self.metrics.print() - self.metrics.step() - - def _checkInputDataType(self, data, batchSize): - """ - checking if data is given as a DataLoader or - if data is given as numpy arrays together with a batchsize - """ - if batchSize is None: - assert type(data) == DataLoader, "if no batch size is provided, data should be data loader" - elif batchSize is not None and type(data) == DataLoader: - raise ValueError('batch size is already determined by data loader') - else: - self._batchSize = batchSize - - def eval(self, data: DataLoader | np.ndarray, labels: np.ndarray = None, batchSize: int = None, keepCounts: bool = True) -> None: - """ - evaluates the class by counting the number of classes per neuron - """ - - # checking if weights were initilized - if self._initedWeights is False: - self.initWeights(data) - - # testing input arguments - self._checkInputDataType(data, batchSize) - - # converting numpy arrays into a DataLoader - if isinstance(data, DataLoader) is False: - data = DataSet(data, labels=labels) - data = DataLoader(data, self._batchSize) - - # setting up the counting arrays for evaluation - uniqueLabels = data.dataSet.uniques - self._counts = np.zeros((self.topology.numNeurons, len(uniqueLabels))) - - # running of data batches - for item in data: - self._eval(item['data'], item['labels']) - - if keepCounts is True: - self.counts.append(self._counts) - - def _eval(self, data, labels): - # Find the bestMatches for each input vector in the batch - bestMatches = self._findBestMatch(data) - - # Use np.add.at() to handle repeated indices correctly - if len(labels.shape) > 1: - categoryLabels = np.argmax(labels, axis=1) - np.add.at(self._counts, (bestMatches, categoryLabels), 1) - else: - np.add.at(self._counts, (bestMatches, labels), 1) - - @property - def weightMatrix(self) -> np.ndarray: - return self.topology.weightMatrix - - @property - def uMatrix(self) -> np.ndarray: - return self.topology.uMatrix - - @property - def weights(self) -> np.ndarray: - return self.topology.weights diff --git a/som/topology.py b/som/topology.py deleted file mode 100644 index a5c1ac8..0000000 --- a/som/topology.py +++ /dev/null @@ -1,363 +0,0 @@ -import numpy as np -from numpy.typing import ArrayLike -from abc import ABC, abstractmethod -from data.dataLoader import DataLoader - - -def mapTo(values: np.ndarray, arange: list = [0,1]) -> np.ndarray: - """ - this function maps any input values into a given range - """ - assert len(arange) == 2, 'arange must be of length 2' - assert arange[0] < arange[1], 'arange must start at a lower value than it ends' - - c, d = arange[0], arange[1] - a, b = np.min(values), np.max(values) - - return c + ((d - c) / (b - a)) * (values - a) - - -class Topology(ABC): - """ - An abstract base class that represents the topology of a Self-Organizing Map (SOM). The topology determines - the arrangement of neurons in the SOM. - """ - def __init__(self, gridSize: tuple[int, int], numFeatures: int): - self.name = self.__class__.__name__ - self.stepCorrection = 0 - - # basic parameters of the topology - self.gridSize = list(gridSize) - self.gridIndices = [] # used for visualizing the map as a scatter plot - self.numFeatures = numFeatures - self.numNeurons = np.prod(gridSize) - - # neighborhood relations - self.neighborIndices = [] - self.neuronIndices = [] - - # weights and neuron init - self.weights = np.zeros((self.numNeurons, self.numFeatures)) # weights are in a flat list - self.genIndices() # generating indices, used to find neighborhood relations - - # these arrays will be used assessing the topology - self._movementCounts = np.zeros((self.numNeurons), dtype=int) - self._directionCounts = np.zeros((self.numNeurons, self.numFeatures)) - self._travelDistance = np.zeros((self.numNeurons, self.numFeatures)) - self._minimalDistances = np.zeros((self.numNeurons, self.numFeatures)) - - def initWeights(self, data: DataLoader | np.ndarray) -> None: - """ - Initialize the weights of the neurons in the SOM using the given data. - """ - # checking if data is given as numpy array or as a dataloader - if isinstance(data, DataLoader): - minValues = np.min(data.dataSet, axis=0) - maxValues = np.max(data.dataSet, axis=0) - else: - minValues = np.min(data, axis=0) - maxValues = np.max(data, axis=0) - - # Initialize weights within the range for each feature - for i in range(self.numFeatures): - self.weights[:, i] = np.random.uniform(minValues[i], maxValues[i], self.numNeurons) - - @property - def weightMatrix(self) -> np.ndarray: - """ - generates the weight matrix from neurons in order to plot it - """ - return np.linalg.norm(self.weights,axis=-1).reshape(*self.gridSize) - - @property - def uMatrix(self) -> np.ndarray: - """ - generates the u-matrix from neurons in order to plot it - """ - matrix = np.zeros(self.numNeurons) - for index, weight in enumerate(self.weights): - distances = np.linalg.norm(weight - self.weights[self.getNeighbors(index)], axis=-1) - matrix[index] = np.mean(distances) - - return matrix.reshape(*self.gridSize) - - def __getitem__(self, index: int | ArrayLike) -> np.ndarray: - """ - this allows getting values directly from the topology - """ - if isinstance(index, (int | np.integer)): - return self.weights[index] - index = np.array(index) - - # here we check if an index is 2d and ravel it to match the shape of the topology - if len(index.shape) == 2: - index = np.ravel_multi_index(index, self.gridSize) - return self.weights[index] - - def __setitem__(self, index: int | ArrayLike, value) -> None: - """ - this allows setting values directly from the topology - """ - if isinstance(index, int | np.integer): - self.weights[index] = np.array(value) - return - index = np.array(index) - - # here we check if an index is 2d and ravel it to match the shape of the topology - if len(index.shape) == 2: - index = np.ravel_multi_index(index, self.gridSize) - self.weights[index] = np.array(value) - - def __iter__(self): - """ - this allows 'for ... in Topology' - """ - return iter(self.weights) - - @abstractmethod - def genIndices(self) -> None: - raise NotImplementedError('this has not been implemented') - - def getNeighbors(self, index) -> np.ndarray: - """ - Get the indices of the neurons that are neighbors to the neuron at the given index. - """ - - # checking if index is a single number - if isinstance(index, (int, np.integer)): - index = np.array([index]) - - # broadcasting indices arrays - tiledIndices = np.tile(self.neuronIndices, len(index)) - repeatedIndex = np.repeat(index, len(self.neuronIndices)) - - # finding the equal values - bools = (tiledIndices == repeatedIndex).reshape(len(index), len(self.neuronIndices)) - return self.neighborIndices[np.any(bools, axis=0)] - - def countMovements(self, bestMatches, neighbors, directions, neighborDirection) -> None: - """ - Update the internal counts related to the movements and directions of the neurons. - """ - np.add.at(self._movementCounts, bestMatches, 1) - np.add.at(self._movementCounts, neighbors, 1) - - self._directionCounts[bestMatches] += np.sign(directions).astype('int') - self._directionCounts[neighbors] += np.sign(neighborDirection).astype('int') - - #self._travelDistance[bestMatches] += directions - #self._travelDistance[neighbors] += neighborDirection - - def grow(self): - """ - Grow the topology of the SOM based on the internal counts of movements and directions. - The growth happens in the direction where there is maximum movement and direction. - - This is still very much a toy/proof of concept model and needs lots of work - """ - - # storing current size/shape of the topology, these are lists because, - # python allows jagged/ragged lists, while numpy doesn't, this makes - # growing/inserting new neurons easier - weightsShape = list((*self.gridSize, self.numFeatures)) - movementsShape = list(self.gridSize) - - # squeezing the movement counts into the range [0,1] - movements = mapTo(self._movementCounts) - - # counting the directional changes - directions = np.sum(abs(self._directionCounts),axis=1) - directions = abs(mapTo(directions, [-1,0])) - - # bringing both together, the idea is that, if a neurons have high movement count, - # but low directional change, these values should be low, I call it jittering... not an official term - one, two = np.argpartition(movements + directions, -2)[-2:] - - # unraveling movement+direction counts - x1, y1 = np.unravel_index(one, shape=(self.gridSize)) - x2, y2 = np.unravel_index(two, shape=(self.gridSize)) - - # finding the biggest changes - xDiff = abs(x1 - x2) - yDiff = abs(y1 - y2) - - # adjusting new size of the topology - if xDiff > yDiff == 0: - weightsShape[1] += 1 - movementsShape[1] += 1 - else: - weightsShape[0] += 1 - movementsShape[0] += 1 - - # creating new arrays for metrics and weights - newMovements = np.zeros(movementsShape, dtype=int) - newWeights = np.zeros(weightsShape) - newDirections = np.zeros(weightsShape, dtype=int) - - if xDiff > yDiff == 0: - # adding neurons in the x-direction - for i in range(newMovements.shape[0]): - weightLine = self.weights.reshape(*self.gridSize, self.numFeatures)[i] - movementLine = self._movementCounts.reshape(*self.gridSize)[i] - directionLine = self._directionCounts.reshape(*self.gridSize, self.numFeatures)[i] - - mappedMovements = mapTo(movementLine) - mappedDirections = abs(mapTo(np.sum(abs(directionLine)), [-1,0])) - - # finding the neuron with biggest jittering - maxIndex = np.argmax(mappedMovements + mappedDirections) - - # checking if maxindex is at the edge - if 0 < maxIndex < len(movementLine) - 1: - left = movementLine[maxIndex - 1] - right = movementLine[maxIndex + 1] - if left > right: - maxIndex -= 1 - - # checking if maxindex is at the edge - if maxIndex == 0: - maxIndex += 1 - - # inserting newest neuron - newMovementLine = np.insert(movementLine, maxIndex, 0) - value = (weightLine[maxIndex-1] + weightLine[maxIndex])/2 - newWeightLine = np.insert(weightLine, maxIndex, value).reshape(-1,self.numFeatures) - newDirectionLine = np.insert(directionLine, maxIndex, np.zeros(self.numFeatures,dtype=int)).reshape(-1,self.numFeatures) - - newMovements[i] = newMovementLine - newWeights[i] = newWeightLine - newDirections[i] = newDirectionLine - else: - # adding neurons in the y-direction - for i in range(newMovements.shape[1]): - weightLine = self.weights.reshape(*self.gridSize, self.numFeatures)[:,i] - movementLine = self._movementCounts.reshape(*self.gridSize)[:,i] - directionLine = self._directionCounts.reshape(*self.gridSize, self.numFeatures)[:,i] - - mappedMovements = mapTo(movementLine) - mappedDirections = abs(mapTo(np.sum(abs(directionLine)), [-1,0])) - - # finding the neuron with biggest jittering - maxIndex = np.argmax(mappedMovements + mappedDirections) - - # checking if maxindex is at the edge - if 0 < maxIndex < len(movementLine) - 1: - left = movementLine[maxIndex - 1] - right = movementLine[maxIndex + 1] - if left > right: - maxIndex -= 1 - - # checking if maxindex is at the edge - if maxIndex == 0: - maxIndex += 1 - - # inserting newest neuron - newMovementLine = np.insert(movementLine, maxIndex, 0) - value = (weightLine[maxIndex-1] + weightLine[maxIndex])/2 - newWeightLine = np.insert(weightLine, maxIndex, value).reshape(-1,self.numFeatures) - newDirectionLine = np.insert(directionLine, maxIndex, np.zeros(self.numFeatures,dtype=int)).reshape(-1,self.numFeatures) - - newMovements[:,i] = newMovementLine - newWeights[:,i] = newWeightLine - newDirections[:,i] = newDirectionLine - - # overwriting old arrays with grown arrays - self.gridSize = movementsShape - self.numNeurons = np.prod(movementsShape) - self._movementCounts = newMovements.reshape(self.numNeurons) - self.weights = newWeights.reshape(self.numNeurons, self.numFeatures) - self._directionCounts = newDirections.reshape(self.numNeurons, self.numFeatures) - - # updating grid indices after growing the topology - self.genIndices() - - -class Rectangular(Topology): - """ - A class used to represent a Rectangular topology of a Self Organizing Map (SOM). - """ - def __init__(self, gridSize: tuple[int, int], numFeatures: int): - super().__init__(gridSize, numFeatures) - - def genIndices(self) -> None: - """ - Generates the indices for neurons and their respective neighbors in the rectangular grid. - """ - self.gridIndices = [] - self.neighborIndices = [] - self.neuronIndices = [] - - # Link the Neurons together in a grid pattern - for index in range(self.numNeurons): - position = [index // self.gridSize[0], index % self.gridSize[1]] - self.gridIndices.append(position) - - neighbors = [] - if index >= self.gridSize[1]: - neighbors.append(index-self.gridSize[1]) # up - if index < self.numNeurons - self.gridSize[1]: - neighbors.append(index+self.gridSize[1]) # down - if index % self.gridSize[1] != 0: - neighbors.append(index-1) # left - if (index+1) % self.gridSize[1] != 0: - neighbors.append(index+1) # right - - self.neighborIndices.extend(neighbors) - self.neuronIndices.extend([index] * len(neighbors)) - - self.gridIndices = np.array(self.gridIndices) - self.neighborIndices = np.array(self.neighborIndices) - self.neuronIndices = np.array(self.neuronIndices) - - -class Hexagonal(Topology): - """ - A class used to represent a Hexagonal topology of a Self Organizing Map (SOM). - """ - def __init__(self, gridSize: tuple[int, int], numFeatures: int): - super().__init__(gridSize, numFeatures) - self.stepCorrection = 0.5 - - def genIndices(self) -> None: - """ - Generates the indices for neurons and their respective neighbors in the hexagonal grid. - """ - self.gridIndices = [] - self.neighborIndices = [] - self.neuronIndices = [] - - # Link the Neurons together in a hexagonal pattern - for index in range(self.numNeurons): - position = [index // self.gridSize[0], index % self.gridSize[1]] - if position[0] % 2 == 0: - position[1] += 0.5 - self.gridIndices.append(position) - - neighbors = [] - if index >= self.gridSize[1]: - neighbors.append(index-self.gridSize[1]) # up - if index < self.numNeurons - self.gridSize[1]: - neighbors.append(index+self.gridSize[1]) # down - if index % self.gridSize[1] != 0: - neighbors.append(index-1) # left - if (index+1) % self.gridSize[1] != 0: - neighbors.append(index+1) # right - - # diagonal neighbors (based on even or odd row) - row = index // self.gridSize[1] - if row % 2 == 0: # even rows - if index >= self.gridSize[1] and (index+1) % self.gridSize[1] != 0: - neighbors.append(index-self.gridSize[1]+1) # upper right - if index < self.numNeurons - self.gridSize[1] and (index+1) % self.gridSize[1] != 0: - neighbors.append(index+self.gridSize[1]+1) # lower right - else: # odd rows - if index >= self.gridSize[1] and index % self.gridSize[1] != 0: - neighbors.append(index-self.gridSize[1]-1) # upper left - if index < self.numNeurons - self.gridSize[1] and index % self.gridSize[1] != 0: - neighbors.append(index+self.gridSize[1]-1) # lower left - - self.neighborIndices.extend(neighbors) - self.neuronIndices.extend([index] * len(neighbors)) - - self.gridIndices = np.array(self.gridIndices) - self.neighborIndices = np.array(self.neighborIndices) \ No newline at end of file diff --git a/tree-test.ipynb b/tree-test.ipynb index bc16db9..be929b9 100644 --- a/tree-test.ipynb +++ b/tree-test.ipynb @@ -1 +1 @@ -{"cells":[{"cell_type":"markdown","metadata":{},"source":["# Testing the Tree\n","\n","## Importing the Basics"]},{"cell_type":"code","execution_count":1,"metadata":{"trusted":false},"outputs":[],"source":["import numpy as np\n","from matplotlib import pyplot as plt\n","from machineLearning.metric import ConfusionMatrix, RegressionScores\n","from machineLearning.utility import ModelIO\n","from machineLearning.data import DataSet\n","from machineLearning.rf import (\n"," DecisionTree,\n"," Gini, Entropy, MSE, MAE, ODD,\n"," Mode, Mean, Confidence, Probabilities,\n"," CART, ID3, C45, RSA,\n"," ReducedError, CostComplexity, PessimisticError\n",")"]},{"cell_type":"markdown","metadata":{},"source":["## Generating Test Data\n","\n","Here I generate random test data. It's two blocks shifted very slightly in some dimensions. For classifier tasks each block gets a label, for regressor tasks each block gets the average coordinates plus some random value as a traget. It's a very simple dummy data set meant for testing the code.\n","\n","Here one can change the dimensionallity and amount of the data."]},{"cell_type":"code","execution_count":2,"metadata":{"trusted":false},"outputs":[],"source":["def dataShift(dims):\n"," offSet = [5, 1.5, 2.5]\n"," diffLen = abs(len(offSet) - dims)\n"," offSet.extend([0] * diffLen)\n"," np.random.shuffle(offSet)\n"," return offSet[:dims]\n","\n","# Initialize some parameters\n","totalAmount = 64000\n","dims = 7\n","evalAmount = totalAmount // 4\n","trainAmount = totalAmount - evalAmount\n","offSet = dataShift(dims)\n","\n","# Create covariance matrix\n","cov = np.eye(dims) # This creates a covariance matrix with variances 1 and covariances 0\n","\n","# Generate random multivariate data\n","oneData = np.random.multivariate_normal(np.zeros(dims), cov, totalAmount)\n","twoData = np.random.multivariate_normal(offSet, cov, totalAmount)\n","\n","# Split the data into training and evaluation sets\n","trainData = np.vstack((oneData[:trainAmount], twoData[:trainAmount]))\n","validData = np.vstack((oneData[trainAmount:], twoData[trainAmount:]))\n","\n","# Labels for classification tasks\n","trainLabels = np.hstack((np.zeros(trainAmount), np.ones(trainAmount)))\n","validLabels = np.hstack((np.zeros(evalAmount), np.ones(evalAmount)))\n","\n","# Targets for regression tasks\n","trainTargets = np.sum(trainData, axis=1) + np.random.normal(0, 0.1, 2*trainAmount)\n","validTargets = np.sum(validData, axis=1) + np.random.normal(0, 0.1, 2*evalAmount)\n","\n","# Shuffle the training data\n","trainIndex = np.random.permutation(len(trainData))\n","trainData = trainData[trainIndex]\n","trainLabels = trainLabels[trainIndex]\n","trainTargets = trainTargets[trainIndex]\n","\n","trainSet = DataSet(trainData, targets=trainLabels)\n","validSet = DataSet(validData, targets=validLabels)"]},{"cell_type":"code","execution_count":3,"metadata":{},"outputs":[],"source":["def scatterPairwise(data, labels, size: float = 10):\n"," num_dims = data.shape[1]\n"," fig, axes = plt.subplots(num_dims, num_dims, figsize=(12, 12))\n","\n"," if len(labels.shape) > 1:\n"," labels = np.argmax(labels, axis=1)\n"," \n"," colors = ['tab:blue', 'tab:orange', 'tab:green', 'tab:red']\n"," point_colors = [colors[label] for label in labels]\n","\n"," for i in range(num_dims):\n"," for j in range(num_dims):\n"," if i == j:\n"," axes[i][j].axis('off')\n"," else:\n"," axes[i][j].scatter(data[:, i], data[:, j], c=point_colors, s=size, alpha=0.5,label='data')\n"," axes[i][j].set_xlabel(f\"Dim {i}\")\n"," axes[i][j].set_ylabel(f\"Dim {j}\")\n"," plt.tight_layout()\n"," plt.show()"]},{"cell_type":"code","execution_count":4,"metadata":{},"outputs":[],"source":["#scatterPairwise(trainData, trainLabels.astype('int'))"]},{"cell_type":"markdown","metadata":{},"source":["## Creating the Tree\n","\n","Here the tree is created. One can set the maximum depth of the tree. Depending on the task, we add a different impurity function and a different leaf function. Finally we add the split algorithm and set the feature percentile. Higher numbers look at more possible splits, but decreases speed. Lower numbers look at less possible splits, speeding up the algorithm. Depending on the data set this can have a strong impact on the performance."]},{"cell_type":"code","execution_count":5,"metadata":{"trusted":false},"outputs":[],"source":["task = 'classifier' # 'classifier'/'regressor'\n","tree = DecisionTree(maxDepth=5, minSamplesSplit=12)\n","if task == 'regressor':\n"," tree.setComponent(MSE())\n"," tree.setComponent(Mean())\n","elif task == 'classifier':\n"," tree.setComponent(Entropy())\n"," tree.setComponent(Mode())\n"," #tree.setComponent(Confidence())\n"," #tree.setComponent(Probabilities(2))\n","tree.setComponent(CART(featurePercentile=90))"]},{"cell_type":"markdown","metadata":{},"source":["## Trainining the tree\n","\n","Again, depending on the task we train the tree with targets or labels. Then we make a prediction and plot the tree."]},{"cell_type":"code","execution_count":6,"metadata":{"trusted":false},"outputs":[{"name":"stdout","output_type":"stream","text":["tree 1 |⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿| done ✔ | 47%\n","—————————————————————— tree: 1/1 ———————————————————————\n","split: CART, impurity: Entropy, leaf: Mode, nodes: 31\n","maxDepth: 5, reached depth: 5, minSamplesSplit: 12\n","························································\n","â•´feat: 3 <= 2.81, samples: 96000\n"," ├─feat: 3 <= 2.00, samples: 48527\n"," │ ├─feat: 2 <= 2.32, samples: 46927\n"," │ │ ├─feat: 3 <= 1.35, samples: 46411\n"," │ │ │ └─╴value: 0.0\n"," │ │ │ └─╴value: 0.0\n"," │ │ └─╴feat: 3 <= 1.10, samples: 516\n"," │ │ └─╴value: 0.0\n"," │ │ └─╴value: 0.0\n"," │ └─╴feat: 2 <= 1.45, samples: 1600\n"," │ ├─feat: 4 <= 1.10, samples: 1020\n"," │ │ └─╴value: 0.0\n"," │ │ └─╴value: 0.0\n"," │ └─╴feat: 2 <= 2.12, samples: 580\n"," │ └─╴value: 1.0\n"," │ └─╴value: 1.0\n"," └─╴feat: 3 <= 3.50, samples: 47473\n"," ├─feat: 2 <= 0.48, samples: 2609\n"," │ ├─feat: 2 <= -0.15, samples: 144\n"," │ │ └─╴value: 0.0\n"," │ │ └─╴value: 1.0\n"," │ └─╴feat: 2 <= 2.00, samples: 2465\n"," │ └─╴value: 1.0\n"," │ └─╴value: 1.0\n"," └─╴feat: 3 <= 3.90, samples: 44864\n"," ├─feat: 2 <= 1.14, samples: 3452\n"," │ └─╴value: 1.0\n"," │ └─╴value: 1.0\n"," └─╴feat: 2 <= 0.20, samples: 41412\n"," └─╴value: 1.0\n"," └─╴value: 1.0\n"]}],"source":["tree.train(trainSet)\n","print(tree)"]},{"cell_type":"code","execution_count":7,"metadata":{},"outputs":[],"source":["tree.bake()"]},{"cell_type":"code","execution_count":8,"metadata":{},"outputs":[],"source":["prediction = tree.eval(validSet)"]},{"cell_type":"markdown","metadata":{},"source":["## Evaluating predictions\n","\n","Depending on the task at hand we create a confusion matrix (classification) or simple metrics (regression). Since the number of classes is fixed to two, we don't need to change anything here."]},{"cell_type":"code","execution_count":9,"metadata":{"trusted":false},"outputs":[{"name":"stdout","output_type":"stream","text":["â”â”â”â”â”â”â”â”â”â”â”â” evaluation â”â”â”â”â”â”â”â”â”â”â”â”\n","————————— confusion matrix —————————\n"," Class 0 Class 1 \n","····································\n"," Class 0 15950 50 \n"," 49% 0% \n","····································\n"," Class 1 58 15942 \n"," 0% 49% \n","\n","———————————————————————————————— scores ———————————————————————————————\n"," accuracy precision sensitivity miss rate \n","·······································································\n"," Class 0 0.997 0.996 0.997 0.003 \n"," Class 1 0.997 0.997 0.996 0.004 \n","·······································································\n"," total 0.997 0.997 0.997 0.003 \n"]}],"source":["if task == 'regressor':\n"," metrics = RegressionScores(numClasses=2)\n"," metrics.calcScores(prediction, validTargets, validLabels)\n"," print(metrics)\n","elif task == 'classifier':\n"," confusion = ConfusionMatrix(numClasses=2)\n"," confusion.update(prediction, validLabels)\n"," confusion.percentages()\n"," confusion.calcScores()\n"," print(confusion)"]},{"cell_type":"markdown","metadata":{},"source":["## Saving and Loading a Tree\n","\n","Trees can be converted to dictionaries and then saved as a json file. This allows us to load them and re-use them. Also json is a raw text format, which is neat."]},{"cell_type":"code","execution_count":10,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["—————————————————————— tree: 1/2 ———————————————————————\n","split: CART, impurity: Entropy, leaf: Mode, nodes: 31\n","maxDepth: 5, reached depth: 5, minSamplesSplit: 12\n","························································\n","â•´feat: 3 <= 2.81, samples: 96000\n"," ├─feat: 3 <= 2.00, samples: 48527\n"," │ ├─feat: 2 <= 2.32, samples: 46927\n"," │ │ ├─feat: 3 <= 1.35, samples: 46411\n"," │ │ │ └─╴value: 0.0\n"," │ │ │ └─╴value: 0.0\n"," │ │ └─╴feat: 3 <= 1.10, samples: 516\n"," │ │ └─╴value: 0.0\n"," │ │ └─╴value: 0.0\n"," │ └─╴feat: 2 <= 1.45, samples: 1600\n"," │ ├─feat: 4 <= 1.10, samples: 1020\n"," │ │ └─╴value: 0.0\n"," │ │ └─╴value: 0.0\n"," │ └─╴feat: 2 <= 2.12, samples: 580\n"," │ └─╴value: 1.0\n"," │ └─╴value: 1.0\n"," └─╴feat: 3 <= 3.50, samples: 47473\n"," ├─feat: 2 <= 0.48, samples: 2609\n"," │ ├─feat: 2 <= -0.15, samples: 144\n"," │ │ └─╴value: 0.0\n"," │ │ └─╴value: 1.0\n"," │ └─╴feat: 2 <= 2.00, samples: 2465\n"," │ └─╴value: 1.0\n"," │ └─╴value: 1.0\n"," └─╴feat: 3 <= 3.90, samples: 44864\n"," ├─feat: 2 <= 1.14, samples: 3452\n"," │ └─╴value: 1.0\n"," │ └─╴value: 1.0\n"," └─╴feat: 2 <= 0.20, samples: 41412\n"," └─╴value: 1.0\n"," └─╴value: 1.0\n"]}],"source":["ModelIO.save(tree, 'tree-test')\n","newTree = ModelIO.load('tree-test')\n","print(newTree)"]},{"cell_type":"code","execution_count":11,"metadata":{"trusted":false},"outputs":[{"name":"stdout","output_type":"stream","text":["â”â”â”â”â”â”â”â”â”â”â”â” evaluation â”â”â”â”â”â”â”â”â”â”â”â”\n","————————— confusion matrix —————————\n"," Class 0 Class 1 \n","····································\n"," Class 0 15950 50 \n"," 49% 0% \n","····································\n"," Class 1 58 15942 \n"," 0% 49% \n","\n","———————————————————————————————— scores ———————————————————————————————\n"," accuracy precision sensitivity miss rate \n","·······································································\n"," Class 0 0.997 0.996 0.997 0.003 \n"," Class 1 0.997 0.997 0.996 0.004 \n","·······································································\n"," total 0.997 0.997 0.997 0.003 \n"]}],"source":["prediction = newTree.eval(validData)\n","\n","if task == 'regressor':\n"," newMetrics = RegressionScores(numClasses=2)\n"," newMetrics.calcScores(prediction, validTargets, validLabels)\n"," print(newMetrics)\n","elif task == 'classifier':\n"," newConfusion = ConfusionMatrix(numClasses=2)\n"," newConfusion.update(prediction, validLabels)\n"," newConfusion.percentages()\n"," newConfusion.calcScores()\n"," print(newConfusion)"]},{"cell_type":"markdown","metadata":{},"source":["## Comment\n","\n","The tree works pretty well with both regression and classification tasks. Labels shouldn't be one-hot encoded, it works but it's still rather iffy. Targets should 1D, I haven't tested with 2D, it might work. Training can be really fast with a percentile set in the split algorithm, otherwise it can be rather slow. Making predictions work fast and well enough."]}],"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.2"},"vscode":{"interpreter":{"hash":"aee8b7b246df8f9039afb4144a1f6fd8d2ca17a180786b69acc140d282b71a49"}}},"nbformat":4,"nbformat_minor":2} +{"cells":[{"cell_type":"markdown","metadata":{},"source":["# Testing the Tree\n","\n","## Importing the Basics"]},{"cell_type":"code","execution_count":1,"metadata":{"trusted":false},"outputs":[],"source":["import numpy as np\n","from matplotlib import pyplot as plt\n","from machineLearning.metric import ConfusionMatrix, RegressionScores\n","from machineLearning.utility import ModelIO\n","from machineLearning.data import DataSet\n","from machineLearning.rf import (\n"," DecisionTree,\n"," Gini, Entropy, MSE, MAE, ODD,\n"," Mode, Mean, Confidence, Probabilities, AnomalyDetection,\n"," CART, ID3, C45, RSA,\n"," ReducedError, CostComplexity, PessimisticError\n",")"]},{"cell_type":"markdown","metadata":{},"source":["## Generating Test Data\n","\n","Here I generate random test data. It's two blocks shifted very slightly in some dimensions. For classifier tasks each block gets a label, for regressor tasks each block gets the average coordinates plus some random value as a traget. It's a very simple dummy data set meant for testing the code.\n","\n","Here one can change the dimensionallity and amount of the data."]},{"cell_type":"code","execution_count":2,"metadata":{"trusted":false},"outputs":[],"source":["def dataShift(dims):\n"," offSet = [5, 1.5, 2.5]\n"," diffLen = abs(len(offSet) - dims)\n"," offSet.extend([0] * diffLen)\n"," np.random.shuffle(offSet)\n"," return offSet[:dims]\n","\n","# Initialize some parameters\n","totalAmount = 64000\n","dims = 7\n","evalAmount = totalAmount // 4\n","trainAmount = totalAmount - evalAmount\n","offSet = dataShift(dims)\n","\n","# Create covariance matrix\n","cov = np.eye(dims) # This creates a covariance matrix with variances 1 and covariances 0\n","\n","# Generate random multivariate data\n","oneData = np.random.multivariate_normal(np.zeros(dims), cov, totalAmount)\n","twoData = np.random.multivariate_normal(offSet, cov, totalAmount)\n","\n","# Split the data into training and evaluation sets\n","trainData = np.vstack((oneData[:trainAmount], twoData[:trainAmount]))\n","validData = np.vstack((oneData[trainAmount:], twoData[trainAmount:]))\n","\n","# Labels for classification tasks\n","trainLabels = np.hstack((np.zeros(trainAmount), np.ones(trainAmount)))\n","validLabels = np.hstack((np.zeros(evalAmount), np.ones(evalAmount)))\n","\n","# Targets for regression tasks\n","trainTargets = np.sum(trainData, axis=1) + np.random.normal(0, 0.1, 2*trainAmount)\n","validTargets = np.sum(validData, axis=1) + np.random.normal(0, 0.1, 2*evalAmount)\n","\n","# Shuffle the training data\n","trainIndex = np.random.permutation(len(trainData))\n","trainData = trainData[trainIndex]\n","trainLabels = trainLabels[trainIndex]\n","trainTargets = trainTargets[trainIndex]\n","\n","trainSet = DataSet(trainData, targets=trainLabels)\n","validSet = DataSet(validData, targets=validLabels)"]},{"cell_type":"code","execution_count":3,"metadata":{},"outputs":[],"source":["def scatterPairwise(data, labels, size: float = 10):\n"," num_dims = data.shape[1]\n"," fig, axes = plt.subplots(num_dims, num_dims, figsize=(12, 12))\n","\n"," if len(labels.shape) > 1:\n"," labels = np.argmax(labels, axis=1)\n"," \n"," colors = ['tab:blue', 'tab:orange', 'tab:green', 'tab:red']\n"," point_colors = [colors[label] for label in labels]\n","\n"," for i in range(num_dims):\n"," for j in range(num_dims):\n"," if i == j:\n"," axes[i][j].axis('off')\n"," else:\n"," axes[i][j].scatter(data[:, i], data[:, j], c=point_colors, s=size, alpha=0.5,label='data')\n"," axes[i][j].set_xlabel(f\"Dim {i}\")\n"," axes[i][j].set_ylabel(f\"Dim {j}\")\n"," plt.tight_layout()\n"," plt.show()"]},{"cell_type":"code","execution_count":4,"metadata":{},"outputs":[],"source":["#scatterPairwise(trainData, trainLabels.astype('int'))"]},{"cell_type":"markdown","metadata":{},"source":["## Creating the Tree\n","\n","Here the tree is created. One can set the maximum depth of the tree. Depending on the task, we add a different impurity function and a different leaf function. Finally we add the split algorithm and set the feature percentile. Higher numbers look at more possible splits, but decreases speed. Lower numbers look at less possible splits, speeding up the algorithm. Depending on the data set this can have a strong impact on the performance."]},{"cell_type":"code","execution_count":5,"metadata":{"trusted":false},"outputs":[],"source":["task = 'classifier' # 'classifier'/'regressor'\n","tree = DecisionTree(maxDepth=5, minSamplesSplit=12)\n","if task == 'regressor':\n"," tree.setComponent(MSE())\n"," tree.setComponent(Mean())\n","elif task == 'classifier':\n"," tree.setComponent(Entropy())\n"," tree.setComponent(Mode())\n"," #tree.setComponent(Confidence())\n"," #tree.setComponent(Probabilities(2))\n","tree.setComponent(CART(featurePercentile=90))"]},{"cell_type":"code","execution_count":3,"metadata":{},"outputs":[],"source":["tree = DecisionTree(maxDepth=5, minSamplesSplit=12)\n","tree.setComponent(RSA())\n","tree.setComponent(ODD())\n","tree.setComponent(AnomalyDetection())"]},{"cell_type":"markdown","metadata":{},"source":["## Trainining the tree\n","\n","Again, depending on the task we train the tree with targets or labels. Then we make a prediction and plot the tree."]},{"cell_type":"code","execution_count":4,"metadata":{"trusted":false},"outputs":[{"name":"stdout","output_type":"stream","text":["tree 1 |⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿| done ✔ | 28%\n","—————————————————————————— tree: 1/1 ——————————————————————————\n","split: RSA, impurity: ODD, leaf: AnomalyDetection, nodes: 19\n","maxDepth: 5, reached depth: 5, minSamplesSplit: 12\n","·······························································\n","â•´feat: 6 <= -2.99, samples: 96000\n"," ├─feat: 0 <= 2.69, samples: 140\n"," │ └─╴value: 0.0\n"," │ └─╴value: 1.0\n"," └─╴feat: 6 <= -2.10, samples: 95860\n"," ├─feat: 2 <= -0.94, samples: 1609\n"," │ ├─feat: 5 <= 3.07, samples: 283\n"," │ │ └─╴value: 1.0\n"," │ │ └─╴value: 1.0\n"," │ └─╴feat: 6 <= -2.85, samples: 1326\n"," │ └─╴value: 0.0\n"," │ └─╴value: 1.0\n"," └─╴feat: 2 <= -3.31, samples: 94251\n"," ├─feat: 3 <= -1.47, samples: 44\n"," │ └─╴value: 1.0\n"," │ └─╴value: 1.0\n"," └─╴feat: 5 <= 0.55, samples: 94207\n"," └─╴value: 0.0\n"," └─╴value: 1.0\n"]}],"source":["tree.train(trainSet)\n","print(tree)"]},{"cell_type":"code","execution_count":7,"metadata":{},"outputs":[],"source":["tree.bake()"]},{"cell_type":"code","execution_count":5,"metadata":{},"outputs":[{"ename":"AttributeError","evalue":"Node does not have attribute 'level'","output_type":"error","traceback":["\u001b[0;31m---------------------------------------------------------------------------\u001b[0m","\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)","Cell \u001b[0;32mIn[5], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m prediction \u001b[38;5;241m=\u001b[39m \u001b[43mtree\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43meval\u001b[49m\u001b[43m(\u001b[49m\u001b[43mvalidSet\u001b[49m\u001b[43m)\u001b[49m\n","File \u001b[0;32m~/Documents/neural network/machineLearning/rf/decisionTree.py:281\u001b[0m, in \u001b[0;36mDecisionTree.eval\u001b[0;34m(self, data)\u001b[0m\n\u001b[1;32m 278\u001b[0m \u001b[38;5;66;03m# iterating over raw predictions\u001b[39;00m\n\u001b[1;32m 279\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m ThreadPoolExecutor(max_workers\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m) \u001b[38;5;28;01mas\u001b[39;00m executor:\n\u001b[1;32m 280\u001b[0m \u001b[38;5;66;03m# Assuming 'rawPredictions' is a list of np.ndarray objects and you don't have 'nodes' yet.\u001b[39;00m\n\u001b[0;32m--> 281\u001b[0m predictions \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mlist\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mexecutor\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmap\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_leafFunction\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mrawPredictions\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 282\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 283\u001b[0m predictions \u001b[38;5;241m=\u001b[39m [\u001b[38;5;241m0\u001b[39m] \u001b[38;5;241m*\u001b[39m \u001b[38;5;28mlen\u001b[39m(data)\n","File \u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/concurrent/futures/_base.py:619\u001b[0m, in \u001b[0;36mExecutor.map.<locals>.result_iterator\u001b[0;34m()\u001b[0m\n\u001b[1;32m 616\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m fs:\n\u001b[1;32m 617\u001b[0m \u001b[38;5;66;03m# Careful not to keep a reference to the popped future\u001b[39;00m\n\u001b[1;32m 618\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m timeout \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m--> 619\u001b[0m \u001b[38;5;28;01myield\u001b[39;00m \u001b[43m_result_or_cancel\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfs\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpop\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 620\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 621\u001b[0m \u001b[38;5;28;01myield\u001b[39;00m _result_or_cancel(fs\u001b[38;5;241m.\u001b[39mpop(), end_time \u001b[38;5;241m-\u001b[39m time\u001b[38;5;241m.\u001b[39mmonotonic())\n","File \u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/concurrent/futures/_base.py:317\u001b[0m, in \u001b[0;36m_result_or_cancel\u001b[0;34m(***failed resolving arguments***)\u001b[0m\n\u001b[1;32m 315\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 316\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 317\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfut\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mresult\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtimeout\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 318\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[1;32m 319\u001b[0m fut\u001b[38;5;241m.\u001b[39mcancel()\n","File \u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/concurrent/futures/_base.py:449\u001b[0m, in \u001b[0;36mFuture.result\u001b[0;34m(self, timeout)\u001b[0m\n\u001b[1;32m 447\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m CancelledError()\n\u001b[1;32m 448\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_state \u001b[38;5;241m==\u001b[39m FINISHED:\n\u001b[0;32m--> 449\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m__get_result\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 451\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_condition\u001b[38;5;241m.\u001b[39mwait(timeout)\n\u001b[1;32m 453\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_state \u001b[38;5;129;01min\u001b[39;00m [CANCELLED, CANCELLED_AND_NOTIFIED]:\n","File \u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/concurrent/futures/_base.py:401\u001b[0m, in \u001b[0;36mFuture.__get_result\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 399\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_exception:\n\u001b[1;32m 400\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 401\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_exception\n\u001b[1;32m 402\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[1;32m 403\u001b[0m \u001b[38;5;66;03m# Break a reference cycle with the exception in self._exception\u001b[39;00m\n\u001b[1;32m 404\u001b[0m \u001b[38;5;28mself\u001b[39m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n","File \u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/concurrent/futures/thread.py:58\u001b[0m, in \u001b[0;36m_WorkItem.run\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 55\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m\n\u001b[1;32m 57\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 58\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfn\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 59\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m exc:\n\u001b[1;32m 60\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfuture\u001b[38;5;241m.\u001b[39mset_exception(exc)\n","File \u001b[0;32m~/Documents/neural network/machineLearning/rf/leafFunction.py:142\u001b[0m, in \u001b[0;36mAnomalyDetection.__call__\u001b[0;34m(self, node)\u001b[0m\n\u001b[1;32m 141\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__call__\u001b[39m(\u001b[38;5;28mself\u001b[39m, node: Node \u001b[38;5;241m|\u001b[39m np\u001b[38;5;241m.\u001b[39mndarray) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m np\u001b[38;5;241m.\u001b[39mndarray:\n\u001b[0;32m--> 142\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_leafFunc\u001b[49m\u001b[43m(\u001b[49m\u001b[43mnode\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mnode\u001b[49m\u001b[43m)\u001b[49m\n","File \u001b[0;32m~/Documents/neural network/machineLearning/rf/leafFunction.py:150\u001b[0m, in \u001b[0;36mAnomalyDetection._leafFunc\u001b[0;34m(self, node)\u001b[0m\n\u001b[1;32m 148\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m np\u001b[38;5;241m.\u001b[39marray([\u001b[38;5;28mgetattr\u001b[39m(node, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstrategy)])\n\u001b[1;32m 149\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m--> 150\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mAttributeError\u001b[39;00m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mNode does not have attribute \u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstrategy\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n","\u001b[0;31mAttributeError\u001b[0m: Node does not have attribute 'level'"]}],"source":["prediction = tree.eval(validSet)"]},{"cell_type":"markdown","metadata":{},"source":["## Evaluating predictions\n","\n","Depending on the task at hand we create a confusion matrix (classification) or simple metrics (regression). Since the number of classes is fixed to two, we don't need to change anything here."]},{"cell_type":"code","execution_count":9,"metadata":{"trusted":false},"outputs":[{"name":"stdout","output_type":"stream","text":["â”â”â”â”â”â”â”â”â”â”â”â” evaluation â”â”â”â”â”â”â”â”â”â”â”â”\n","————————— confusion matrix —————————\n"," Class 0 Class 1 \n","····································\n"," Class 0 15950 50 \n"," 49% 0% \n","····································\n"," Class 1 58 15942 \n"," 0% 49% \n","\n","———————————————————————————————— scores ———————————————————————————————\n"," accuracy precision sensitivity miss rate \n","·······································································\n"," Class 0 0.997 0.996 0.997 0.003 \n"," Class 1 0.997 0.997 0.996 0.004 \n","·······································································\n"," total 0.997 0.997 0.997 0.003 \n"]}],"source":["if task == 'regressor':\n"," metrics = RegressionScores(numClasses=2)\n"," metrics.calcScores(prediction, validTargets, validLabels)\n"," print(metrics)\n","elif task == 'classifier':\n"," confusion = ConfusionMatrix(numClasses=2)\n"," confusion.update(prediction, validLabels)\n"," confusion.percentages()\n"," confusion.calcScores()\n"," print(confusion)"]},{"cell_type":"markdown","metadata":{},"source":["## Saving and Loading a Tree\n","\n","Trees can be converted to dictionaries and then saved as a json file. This allows us to load them and re-use them. Also json is a raw text format, which is neat."]},{"cell_type":"code","execution_count":10,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["—————————————————————— tree: 1/2 ———————————————————————\n","split: CART, impurity: Entropy, leaf: Mode, nodes: 31\n","maxDepth: 5, reached depth: 5, minSamplesSplit: 12\n","························································\n","â•´feat: 3 <= 2.81, samples: 96000\n"," ├─feat: 3 <= 2.00, samples: 48527\n"," │ ├─feat: 2 <= 2.32, samples: 46927\n"," │ │ ├─feat: 3 <= 1.35, samples: 46411\n"," │ │ │ └─╴value: 0.0\n"," │ │ │ └─╴value: 0.0\n"," │ │ └─╴feat: 3 <= 1.10, samples: 516\n"," │ │ └─╴value: 0.0\n"," │ │ └─╴value: 0.0\n"," │ └─╴feat: 2 <= 1.45, samples: 1600\n"," │ ├─feat: 4 <= 1.10, samples: 1020\n"," │ │ └─╴value: 0.0\n"," │ │ └─╴value: 0.0\n"," │ └─╴feat: 2 <= 2.12, samples: 580\n"," │ └─╴value: 1.0\n"," │ └─╴value: 1.0\n"," └─╴feat: 3 <= 3.50, samples: 47473\n"," ├─feat: 2 <= 0.48, samples: 2609\n"," │ ├─feat: 2 <= -0.15, samples: 144\n"," │ │ └─╴value: 0.0\n"," │ │ └─╴value: 1.0\n"," │ └─╴feat: 2 <= 2.00, samples: 2465\n"," │ └─╴value: 1.0\n"," │ └─╴value: 1.0\n"," └─╴feat: 3 <= 3.90, samples: 44864\n"," ├─feat: 2 <= 1.14, samples: 3452\n"," │ └─╴value: 1.0\n"," │ └─╴value: 1.0\n"," └─╴feat: 2 <= 0.20, samples: 41412\n"," └─╴value: 1.0\n"," └─╴value: 1.0\n"]}],"source":["ModelIO.save(tree, 'tree-test')\n","newTree = ModelIO.load('tree-test')\n","print(newTree)"]},{"cell_type":"code","execution_count":11,"metadata":{"trusted":false},"outputs":[{"name":"stdout","output_type":"stream","text":["â”â”â”â”â”â”â”â”â”â”â”â” evaluation â”â”â”â”â”â”â”â”â”â”â”â”\n","————————— confusion matrix —————————\n"," Class 0 Class 1 \n","····································\n"," Class 0 15950 50 \n"," 49% 0% \n","····································\n"," Class 1 58 15942 \n"," 0% 49% \n","\n","———————————————————————————————— scores ———————————————————————————————\n"," accuracy precision sensitivity miss rate \n","·······································································\n"," Class 0 0.997 0.996 0.997 0.003 \n"," Class 1 0.997 0.997 0.996 0.004 \n","·······································································\n"," total 0.997 0.997 0.997 0.003 \n"]}],"source":["prediction = newTree.eval(validData)\n","\n","if task == 'regressor':\n"," newMetrics = RegressionScores(numClasses=2)\n"," newMetrics.calcScores(prediction, validTargets, validLabels)\n"," print(newMetrics)\n","elif task == 'classifier':\n"," newConfusion = ConfusionMatrix(numClasses=2)\n"," newConfusion.update(prediction, validLabels)\n"," newConfusion.percentages()\n"," newConfusion.calcScores()\n"," print(newConfusion)"]},{"cell_type":"markdown","metadata":{},"source":["## Comment\n","\n","The tree works pretty well with both regression and classification tasks. Labels shouldn't be one-hot encoded, it works but it's still rather iffy. Targets should 1D, I haven't tested with 2D, it might work. Training can be really fast with a percentile set in the split algorithm, otherwise it can be rather slow. Making predictions work fast and well enough."]}],"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.2"},"vscode":{"interpreter":{"hash":"aee8b7b246df8f9039afb4144a1f6fd8d2ca17a180786b69acc140d282b71a49"}}},"nbformat":4,"nbformat_minor":2} diff --git a/tree-test.json b/tree-test.json index 99be817..129bc14 100644 --- a/tree-test.json +++ b/tree-test.json @@ -1,16 +1,16 @@ { - "datetime": "2024-03-06T16:29:39.908741", + "datetime": "2024-03-07T11:44:35.279823", "qualifiedName": [ "machineLearning.rf.decisionTree", "DecisionTree" ], "trained": true, - "treeID": 0, + "treeID": 1, "maxDepth": 5, "depth": 5, "minSamplesSplit": 12, "leafFunction": "Mode", - "baked": false, + "baked": true, "impurityMeasure": { "name": "Entropy", "arguments": {} @@ -23,179 +23,179 @@ } }, "nodes": { - "0": { - "threshold": 2.807746776617831, - "feature": 3, - "leftID": 1, - "rightID": 2, - "id": 0, + "15": { + "threshold": 2.2174978385487, + "feature": 1, + "leftID": 16, + "rightID": 17, + "id": 15, "isRoot": true, "parent": null, "rawValues": null, "bakedValues": null }, - "1": { - "threshold": 1.9953861771415191, - "feature": 3, - "leftID": 3, - "rightID": 4, - "id": 1, + "16": { + "threshold": 1.509125837444416, + "feature": 1, + "leftID": 18, + "rightID": 19, + "id": 16, "isRoot": false, - "parent": 0, + "parent": 15, "rawValues": null, "bakedValues": null }, - "2": { - "threshold": 3.4962004922651033, - "feature": 3, - "leftID": 17, - "rightID": 18, - "id": 2, + "17": { + "threshold": 3.0189499988405495, + "feature": 1, + "leftID": 32, + "rightID": 33, + "id": 17, "isRoot": false, - "parent": 0, + "parent": 15, "rawValues": null, "bakedValues": null }, - "3": { - "threshold": 2.315341617113765, - "feature": 2, - "leftID": 5, - "rightID": 6, - "id": 3, + "18": { + "threshold": 1.8373177396784488, + "feature": 5, + "leftID": 20, + "rightID": 21, + "id": 18, "isRoot": false, - "parent": 1, + "parent": 16, "rawValues": null, "bakedValues": null }, - "4": { - "threshold": 1.4480678071564441, - "feature": 2, - "leftID": 11, - "rightID": 12, - "id": 4, + "19": { + "threshold": 1.9545532483656063, + "feature": 5, + "leftID": 26, + "rightID": 27, + "id": 19, "isRoot": false, - "parent": 1, + "parent": 16, "rawValues": null, "bakedValues": null }, - "17": { - "threshold": 0.4828316691790929, - "feature": 2, - "leftID": 19, - "rightID": 20, - "id": 17, + "32": { + "threshold": 0.9871925533441983, + "feature": 5, + "leftID": 34, + "rightID": 35, + "id": 32, "isRoot": false, - "parent": 2, + "parent": 17, "rawValues": null, "bakedValues": null }, - "18": { - "threshold": 3.9011436871916234, - "feature": 3, - "leftID": 25, - "rightID": 26, - "id": 18, + "33": { + "threshold": 3.4876170328480596, + "feature": 1, + "leftID": 40, + "rightID": 41, + "id": 33, "isRoot": false, - "parent": 2, + "parent": 17, "rawValues": null, "bakedValues": null }, - "5": { - "threshold": 1.3547325862135289, - "feature": 3, - "leftID": 7, - "rightID": 8, - "id": 5, + "20": { + "threshold": 0.9271210198409383, + "feature": 1, + "leftID": 22, + "rightID": 23, + "id": 20, "isRoot": false, - "parent": 3, + "parent": 18, "rawValues": null, "bakedValues": null }, - "6": { - "threshold": 1.1049786807903943, - "feature": 3, - "leftID": 9, - "rightID": 10, - "id": 6, + "21": { + "threshold": 0.637077819988592, + "feature": 1, + "leftID": 24, + "rightID": 25, + "id": 21, "isRoot": false, - "parent": 3, + "parent": 18, "rawValues": null, "bakedValues": null }, - "11": { - "threshold": 1.0980478176609991, - "feature": 4, - "leftID": 13, - "rightID": 14, - "id": 11, + "26": { + "threshold": 0.7672415690423146, + "feature": 5, + "leftID": 28, + "rightID": 29, + "id": 26, "isRoot": false, - "parent": 4, + "parent": 19, "rawValues": null, "bakedValues": null }, - "12": { - "threshold": 2.1243444832069356, - "feature": 2, - "leftID": 15, - "rightID": 16, - "id": 12, + "27": { + "threshold": 0.8944178407550227, + "feature": 6, + "leftID": 30, + "rightID": 31, + "id": 27, "isRoot": false, - "parent": 4, + "parent": 19, "rawValues": null, "bakedValues": null }, - "19": { - "threshold": -0.1460235375773515, - "feature": 2, - "leftID": 21, - "rightID": 22, - "id": 19, + "34": { + "threshold": 0.5144414772242086, + "feature": 6, + "leftID": 36, + "rightID": 37, + "id": 34, "isRoot": false, - "parent": 17, + "parent": 32, "rawValues": null, "bakedValues": null }, - "20": { - "threshold": 1.997877967289944, - "feature": 2, - "leftID": 23, - "rightID": 24, - "id": 20, + "35": { + "threshold": 0.48920348971964445, + "feature": 6, + "leftID": 38, + "rightID": 39, + "id": 35, "isRoot": false, - "parent": 17, + "parent": 32, "rawValues": null, "bakedValues": null }, - "25": { - "threshold": 1.1395847185160846, - "feature": 2, - "leftID": 27, - "rightID": 28, - "id": 25, + "40": { + "threshold": 0.6649474648213399, + "feature": 5, + "leftID": 42, + "rightID": 43, + "id": 40, "isRoot": false, - "parent": 18, + "parent": 33, "rawValues": null, "bakedValues": null }, - "26": { - "threshold": 0.20123386854707728, - "feature": 2, - "leftID": 29, - "rightID": 30, - "id": 26, + "41": { + "threshold": 0.6523406910386009, + "feature": 5, + "leftID": 44, + "rightID": 45, + "id": 41, "isRoot": false, - "parent": 18, + "parent": 33, "rawValues": null, "bakedValues": null }, - "7": { + "22": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 7, + "id": 22, "isRoot": false, - "parent": 5, + "parent": 20, "rawValues": [ 0.0, 0.0, @@ -2981,21 +2981,6 @@ 0.0, 0.0, 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, 0.0, 0.0, 0.0, @@ -38351,6 +38336,19 @@ 0.0, 0.0, 0.0, + 0.0 + ], + "bakedValues": 0 + }, + "23": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 23, + "isRoot": false, + "parent": 20, + "rawValues": [ 0.0, 0.0, 0.0, @@ -41379,6 +41377,7 @@ 0.0, 0.0, 0.0, + 1.0, 0.0, 0.0, 0.0, @@ -41709,6 +41708,7 @@ 0.0, 0.0, 0.0, + 1.0, 0.0, 0.0, 0.0, @@ -42539,6 +42539,7 @@ 0.0, 0.0, 0.0, + 1.0, 0.0, 0.0, 0.0, @@ -43547,19 +43548,6 @@ 0.0, 0.0, 0.0, - 0.0 - ], - "bakedValues": null - }, - "8": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 8, - "isRoot": false, - "parent": 5, - "rawValues": [ 0.0, 0.0, 0.0, @@ -43605,6 +43593,19 @@ 0.0, 0.0, 0.0, + 0.0 + ], + "bakedValues": 0 + }, + "24": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 24, + "isRoot": false, + "parent": 21, + "rawValues": [ 0.0, 0.0, 0.0, @@ -43657,7 +43658,6 @@ 0.0, 0.0, 0.0, - 1.0, 0.0, 0.0, 0.0, @@ -44049,7 +44049,6 @@ 0.0, 0.0, 0.0, - 1.0, 0.0, 0.0, 0.0, @@ -44146,10 +44145,8 @@ 0.0, 0.0, 0.0, - 1.0, 0.0, 0.0, - 1.0, 0.0, 0.0, 0.0, @@ -44359,7 +44356,6 @@ 0.0, 0.0, 0.0, - 1.0, 0.0, 0.0, 0.0, @@ -44399,7 +44395,6 @@ 0.0, 0.0, 0.0, - 1.0, 0.0, 0.0, 0.0, @@ -44562,7 +44557,6 @@ 0.0, 0.0, 0.0, - 1.0, 0.0, 0.0, 0.0, @@ -44661,7 +44655,6 @@ 0.0, 0.0, 0.0, - 1.0, 0.0, 0.0, 0.0, @@ -44715,7 +44708,6 @@ 0.0, 0.0, 0.0, - 1.0, 0.0, 0.0, 0.0, @@ -44767,6 +44759,19 @@ 0.0, 0.0, 0.0, + 0.0 + ], + "bakedValues": 0 + }, + "25": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 25, + "isRoot": false, + "parent": 21, + "rawValues": [ 0.0, 0.0, 0.0, @@ -44831,6 +44836,7 @@ 0.0, 0.0, 0.0, + 1.0, 0.0, 0.0, 0.0, @@ -44838,12 +44844,14 @@ 0.0, 0.0, 0.0, + 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 1.0, 0.0, 0.0, 0.0, @@ -44857,6 +44865,7 @@ 0.0, 0.0, 0.0, + 1.0, 0.0, 0.0, 0.0, @@ -44895,9 +44904,7 @@ 0.0, 0.0, 0.0, - 1.0, 0.0, - 1.0, 0.0, 0.0, 0.0, @@ -44915,10 +44922,12 @@ 0.0, 0.0, 0.0, + 1.0, 0.0, 0.0, 0.0, 0.0, + 1.0, 0.0, 0.0, 0.0, @@ -44946,6 +44955,7 @@ 0.0, 0.0, 0.0, + 1.0, 0.0, 0.0, 0.0, @@ -44963,6 +44973,7 @@ 0.0, 0.0, 0.0, + 1.0, 0.0, 0.0, 0.0, @@ -45002,6 +45013,7 @@ 0.0, 0.0, 0.0, + 1.0, 0.0, 0.0, 0.0, @@ -45035,6 +45047,7 @@ 0.0, 0.0, 0.0, + 1.0, 0.0, 0.0, 0.0, @@ -45052,6 +45065,7 @@ 0.0, 0.0, 0.0, + 1.0, 0.0, 0.0, 0.0, @@ -45064,6 +45078,7 @@ 0.0, 0.0, 0.0, + 1.0, 0.0, 0.0, 0.0, @@ -45081,6 +45096,19 @@ 0.0, 0.0, 0.0, + 0.0 + ], + "bakedValues": 0 + }, + "28": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 28, + "isRoot": false, + "parent": 26, + "rawValues": [ 0.0, 0.0, 0.0, @@ -45123,7 +45151,6 @@ 0.0, 0.0, 0.0, - 1.0, 0.0, 0.0, 0.0, @@ -45143,6 +45170,7 @@ 0.0, 0.0, 0.0, + 1.0, 0.0, 0.0, 0.0, @@ -45177,9 +45205,7 @@ 0.0, 0.0, 0.0, - 1.0, 0.0, - 1.0, 0.0, 0.0, 0.0, @@ -45197,7 +45223,6 @@ 0.0, 0.0, 0.0, - 1.0, 0.0, 0.0, 0.0, @@ -45222,10 +45247,8 @@ 0.0, 0.0, 0.0, - 1.0, 0.0, 0.0, - 1.0, 0.0, 0.0, 0.0, @@ -45549,7 +45572,6 @@ 0.0, 0.0, 0.0, - 1.0, 0.0, 0.0, 0.0, @@ -45599,7 +45621,6 @@ 0.0, 0.0, 0.0, - 1.0, 0.0, 0.0, 0.0, @@ -45658,7 +45679,6 @@ 0.0, 0.0, 0.0, - 1.0, 0.0, 0.0, 0.0, @@ -45923,7 +45943,6 @@ 0.0, 0.0, 0.0, - 1.0, 0.0, 0.0, 0.0, @@ -46071,7 +46090,6 @@ 0.0, 0.0, 0.0, - 1.0, 0.0, 0.0, 0.0, @@ -46351,7 +46369,6 @@ 0.0, 0.0, 0.0, - 1.0, 0.0, 0.0, 0.0, @@ -46378,7 +46395,6 @@ 0.0, 0.0, 0.0, - 1.0, 0.0, 0.0, 0.0, @@ -46413,7 +46429,6 @@ 0.0, 0.0, 0.0, - 1.0, 0.0, 0.0, 0.0, @@ -46619,19 +46634,6 @@ 0.0, 0.0, 0.0, - 0.0 - ], - "bakedValues": null - }, - "9": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 9, - "isRoot": false, - "parent": 6, - "rawValues": [ 0.0, 0.0, 0.0, @@ -47058,120 +47060,57 @@ 0.0, 0.0 ], - "bakedValues": null + "bakedValues": 0 }, - "10": { + "29": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 10, + "id": 29, "isRoot": false, - "parent": 6, + "parent": 26, "rawValues": [ - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 0.0, - 1.0, - 0.0, - 1.0, - 1.0, - 1.0, - 0.0, - 1.0, - 1.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 1.0, - 1.0, - 1.0, - 1.0, 0.0, 0.0, 0.0, - 1.0, - 0.0, 0.0, 0.0, - 1.0, 0.0, 0.0, - 1.0, 0.0, - 1.0, - 1.0, 0.0, - 1.0, 0.0, 0.0, 0.0, 0.0, - 1.0, 0.0, - 1.0, - 1.0, 0.0, - 1.0, 0.0, - 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, - 1.0, - 0.0, - 1.0, 0.0, 0.0, 0.0, - 1.0, 0.0, 0.0, - 1.0, 0.0, 0.0, - 1.0, 0.0, 0.0, 0.0, - 1.0, 0.0, - 1.0, 0.0, 0.0, 0.0, - 1.0, 0.0, - 1.0, - 1.0, - 1.0, 0.0, 1.0, - 1.0, - 0.0, 0.0, 0.0, - 0.0 - ], - "bakedValues": null - }, - "13": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 13, - "isRoot": false, - "parent": 11, - "rawValues": [ 0.0, 0.0, 0.0, @@ -47181,7 +47120,6 @@ 0.0, 0.0, 0.0, - 1.0, 0.0, 0.0, 0.0, @@ -47200,7 +47138,6 @@ 0.0, 0.0, 0.0, - 1.0, 0.0, 0.0, 0.0, @@ -47219,7 +47156,6 @@ 0.0, 0.0, 0.0, - 1.0, 0.0, 0.0, 0.0, @@ -47227,7 +47163,6 @@ 0.0, 0.0, 0.0, - 1.0, 0.0, 0.0, 0.0, @@ -47270,7 +47205,6 @@ 0.0, 0.0, 0.0, - 1.0, 0.0, 0.0, 0.0, @@ -47283,6 +47217,7 @@ 0.0, 0.0, 0.0, + 1.0, 0.0, 0.0, 0.0, @@ -47320,6 +47255,7 @@ 0.0, 0.0, 0.0, + 1.0, 0.0, 0.0, 0.0, @@ -47345,6 +47281,7 @@ 0.0, 0.0, 0.0, + 1.0, 0.0, 0.0, 0.0, @@ -47354,9 +47291,7 @@ 0.0, 0.0, 0.0, - 0.0, - 0.0, - 0.0, + 1.0, 1.0, 0.0, 0.0, @@ -47374,6 +47309,7 @@ 0.0, 0.0, 0.0, + 1.0, 0.0, 0.0, 0.0, @@ -47407,16 +47343,19 @@ 0.0, 0.0, 0.0, - 1.0, 0.0, + 1.0, 0.0, 0.0, + 1.0, 0.0, 0.0, 0.0, 0.0, + 1.0, 0.0, 0.0, + 1.0, 0.0, 0.0, 0.0, @@ -47471,6 +47410,7 @@ 0.0, 0.0, 0.0, + 1.0, 0.0, 0.0, 0.0, @@ -47511,13 +47451,16 @@ 0.0, 0.0, 0.0, + 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 1.0, 0.0, + 1.0, 0.0, 0.0, 0.0, @@ -47537,6 +47480,7 @@ 0.0, 0.0, 0.0, + 1.0, 0.0, 0.0, 0.0, @@ -47574,6 +47518,7 @@ 0.0, 0.0, 0.0, + 1.0, 0.0, 0.0, 0.0, @@ -47593,16 +47538,19 @@ 0.0, 0.0, 0.0, + 1.0, 0.0, 0.0, 0.0, 0.0, + 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 1.0, 0.0, 0.0, 0.0, @@ -47616,6 +47564,7 @@ 0.0, 0.0, 0.0, + 1.0, 0.0, 0.0, 0.0, @@ -47623,6 +47572,7 @@ 0.0, 0.0, 0.0, + 1.0, 0.0, 0.0, 0.0, @@ -47635,9 +47585,24 @@ 0.0, 0.0, 0.0, + 0.0 + ], + "bakedValues": 0 + }, + "30": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 30, + "isRoot": false, + "parent": 27, + "rawValues": [ 0.0, + 1.0, 0.0, 0.0, + 1.0, 0.0, 0.0, 0.0, @@ -47650,16 +47615,24 @@ 0.0, 0.0, 0.0, + 1.0, 0.0, 0.0, 0.0, + 1.0, 0.0, + 1.0, + 1.0, + 1.0, + 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 1.0, + 1.0, 0.0, 0.0, 0.0, @@ -47672,6 +47645,7 @@ 0.0, 0.0, 0.0, + 1.0, 0.0, 0.0, 0.0, @@ -47679,20 +47653,119 @@ 0.0, 0.0, 0.0, + 1.0, 0.0, 0.0, 0.0, 0.0, + 1.0, + 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 1.0, + 1.0, + 1.0, + 1.0, 0.0, + 1.0, 0.0, 0.0, + 1.0, + 1.0, 0.0, + 1.0, + 0.0, + 1.0, + 0.0, + 0.0 + ], + "bakedValues": 0 + }, + "31": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 31, + "isRoot": false, + "parent": 27, + "rawValues": [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.0, + 1.0, + 1.0, + 1.0, + 0.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.0, + 1.0, + 1.0, + 1.0, + 0.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0 + ], + "bakedValues": 1 + }, + "36": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 36, + "isRoot": false, + "parent": 34, + "rawValues": [ 0.0, 0.0, 0.0, @@ -47712,11 +47785,6 @@ 0.0, 0.0, 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, 1.0, 0.0, 0.0, @@ -47736,7 +47804,7 @@ 0.0, 0.0, 0.0, - 1.0, + 0.0, 0.0, 0.0, 0.0, @@ -47794,7 +47862,6 @@ 0.0, 0.0, 0.0, - 1.0, 0.0, 0.0, 0.0, @@ -47808,7 +47875,6 @@ 0.0, 0.0, 0.0, - 1.0, 0.0, 0.0, 0.0, @@ -47829,7 +47895,6 @@ 0.0, 0.0, 0.0, - 1.0, 0.0, 0.0, 0.0, @@ -47839,7 +47904,6 @@ 0.0, 0.0, 0.0, - 1.0, 0.0, 0.0, 0.0, @@ -47847,7 +47911,9 @@ 0.0, 0.0, 0.0, - 1.0, + 0.0, + 0.0, + 0.0, 0.0, 0.0, 0.0, @@ -47885,11 +47951,13 @@ 0.0, 0.0, 0.0, + 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 1.0, 0.0, 0.0, 0.0, @@ -47932,6 +48000,7 @@ 0.0, 0.0, 0.0, + 1.0, 0.0, 0.0, 0.0, @@ -47941,16 +48010,18 @@ 0.0, 0.0, 0.0, - 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 1.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 1.0, 0.0, 0.0, 0.0, @@ -47971,12 +48042,12 @@ 0.0, 0.0, 1.0, - 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 1.0, 0.0, 0.0, 0.0, @@ -48010,29 +48081,12 @@ 0.0, 0.0, 0.0, - 1.0, - 0.0 - ], - "bakedValues": null - }, - "14": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 14, - "isRoot": false, - "parent": 11, - "rawValues": [ 0.0, 0.0, 0.0, - 1.0, - 1.0, 0.0, 0.0, 0.0, - 1.0, 0.0, 1.0, 0.0, @@ -48044,12 +48098,7 @@ 0.0, 0.0, 0.0, - 1.0, - 1.0, - 1.0, 0.0, - 1.0, - 1.0, 0.0, 0.0, 0.0, @@ -48058,41 +48107,43 @@ 0.0, 0.0, 0.0, - 1.0, - 1.0, - 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 1.0, 0.0, - 1.0, 0.0, - 1.0, - 1.0, - 1.0, 0.0, 0.0, - 1.0, - 0.0, - 0.0, - 1.0, 0.0, + 0.0 + ], + "bakedValues": 0 + }, + "37": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 37, + "isRoot": false, + "parent": 34, + "rawValues": [ 0.0, 0.0, 1.0, - 1.0, 0.0, 1.0, 0.0, - 0.0, + 1.0, + 1.0, 0.0, 1.0, 1.0, 0.0, + 0.0, 1.0, 0.0, 1.0, @@ -48110,13 +48161,16 @@ 0.0, 1.0, 0.0, + 1.0, 0.0, + 1.0, + 1.0, 0.0, 0.0, 0.0, 1.0, 1.0, - 0.0, + 1.0, 1.0, 0.0, 0.0, @@ -48125,8 +48179,6 @@ 0.0, 1.0, 0.0, - 1.0, - 1.0, 0.0, 0.0, 1.0, @@ -48134,56 +48186,45 @@ 0.0, 1.0, 0.0, - 1.0, + 0.0, 1.0, 1.0, 0.0, 0.0, - 1.0, 0.0, 0.0, 0.0, - 1.0, - 1.0, - 1.0, + 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, - 0.0, - 0.0, - 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, - 0.0, 1.0, 0.0, - 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, + 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, + 1.0, 0.0, 0.0, 0.0, @@ -48193,246 +48234,177 @@ 0.0, 0.0, 0.0, - 1.0, + 0.0, 1.0, 0.0, 0.0, 0.0, - 1.0, 0.0, 0.0, 1.0, 0.0, - 0.0 - ], - "bakedValues": null - }, - "15": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 15, - "isRoot": false, - "parent": 12, - "rawValues": [ 0.0, 1.0, - 1.0, 0.0, 1.0, - 1.0, - 1.0, 0.0, 0.0, - 1.0, - 1.0, 0.0, - 1.0, 0.0, 0.0, - 1.0, 0.0, 0.0, 1.0, 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, 0.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, 0.0, 0.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, 0.0, 0.0, - 1.0, 0.0, - 1.0, + 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, - 1.0, - 1.0, 0.0, - 1.0, - 1.0, - 1.0, + 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, - 1.0, - 1.0, 0.0, - 1.0, 0.0, - 1.0, - 1.0, 0.0, - 1.0, 0.0, - 1.0, - 1.0, - 1.0, 0.0, 1.0, 1.0, - 1.0, - 1.0, 0.0, 0.0, 0.0, - 1.0, - 1.0, - 1.0, 0.0, 0.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, 0.0, - 1.0, - 1.0, - 1.0, 0.0, 1.0, 1.0, - 1.0, 0.0, 1.0, - 0.0, - 1.0, - 1.0, 1.0, 0.0, 0.0, 1.0, - 1.0, - 1.0, 0.0, - 1.0, - 1.0, 0.0, - 1.0, 0.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, 0.0, - 1.0, - 1.0, - 1.0, - 1.0, 0.0, 0.0, 0.0, 1.0, + 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, - 1.0, 0.0, 0.0, - 1.0, 0.0, - 1.0, 0.0, - 1.0, - 1.0, - 1.0, + 0.0, 1.0, 1.0, 0.0, - 1.0, 0.0, - 1.0 + 0.0, + 0.0, + 0.0 ], - "bakedValues": null + "bakedValues": 0 }, - "16": { + "38": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 16, + "id": 38, "isRoot": false, - "parent": 12, + "parent": 35, "rawValues": [ 1.0, 1.0, + 0.0, + 0.0, 1.0, 1.0, 1.0, + 0.0, 1.0, 1.0, + 0.0, 1.0, + 0.0, + 0.0, 1.0, + 0.0, 1.0, 1.0, + 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, + 0.0, 1.0, 1.0, 1.0, + 0.0, + 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, + 0.0, 1.0, + 0.0, 1.0, 1.0, + 0.0, 1.0, + 0.0, + 0.0, 1.0, 1.0, + 1.0, + 0.0, 0.0, 1.0, + 0.0, 1.0, + 0.0, + 0.0, + 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, + 0.0, 1.0, 1.0, 1.0, + 0.0, 1.0, 1.0, + 0.0, 1.0, 1.0, 1.0, @@ -48442,53 +48414,90 @@ 1.0, 1.0, 1.0, + 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, + 0.0, 1.0, + 0.0, 1.0, 1.0, 1.0, 1.0, + 0.0, + 0.0, + 0.0, 1.0, + 0.0, 1.0, 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, 1.0, + 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, + 0.0, 1.0, 1.0, 1.0, + 0.0, + 0.0, + 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, + 0.0, + 0.0, 1.0, + 0.0, 1.0, 1.0, 1.0, 1.0, + 0.0, + 0.0, + 0.0, 1.0, 1.0, 1.0, + 0.0, + 0.0, + 0.0, + 0.0, 1.0, + 0.0, 1.0, 1.0, + 0.0, 1.0, 1.0, + 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, + 0.0, + 0.0, 1.0, + 0.0, 1.0, + 0.0, 1.0, 1.0, 1.0, @@ -48498,27 +48507,37 @@ 1.0, 1.0, 1.0, + 0.0, + 0.0, 1.0, 1.0, + 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, + 0.0, + 0.0, 1.0, 1.0, 1.0, + 0.0, 1.0, 1.0, + 0.0, 1.0, 1.0, 1.0, 1.0, + 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, + 0.0, + 0.0, 1.0, 1.0, 1.0, @@ -48529,6 +48548,7 @@ 1.0, 1.0, 1.0, + 0.0, 1.0, 1.0, 1.0, @@ -48540,12 +48560,30 @@ 1.0, 1.0, 1.0, + 0.0, 1.0, + 0.0, + 0.0, + 0.0, 1.0, + 0.0 + ], + "bakedValues": 1 + }, + "39": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 39, + "isRoot": false, + "parent": 35, + "rawValues": [ 1.0, 1.0, 1.0, 1.0, + 0.0, 1.0, 1.0, 1.0, @@ -48556,6 +48594,7 @@ 1.0, 1.0, 1.0, + 0.0, 1.0, 1.0, 1.0, @@ -48588,6 +48627,8 @@ 1.0, 1.0, 1.0, + 0.0, + 0.0, 1.0, 1.0, 1.0, @@ -48617,8 +48658,6 @@ 1.0, 1.0, 1.0, - 0.0, - 1.0, 1.0, 1.0, 1.0, @@ -48633,19 +48672,20 @@ 1.0, 1.0, 1.0, - 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, + 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, + 0.0, 1.0, 1.0, 1.0, @@ -48653,24 +48693,21 @@ 1.0, 1.0, 1.0, + 0.0, 1.0, 1.0, 1.0, 1.0, - 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, - 0.0, - 0.0, 1.0, 1.0, 1.0, 1.0, - 0.0, 1.0, 1.0, 1.0, @@ -48697,7 +48734,6 @@ 1.0, 1.0, 1.0, - 0.0, 1.0, 1.0, 1.0, @@ -48708,6 +48744,7 @@ 1.0, 1.0, 1.0, + 0.0, 1.0, 1.0, 1.0, @@ -48717,7 +48754,6 @@ 1.0, 1.0, 1.0, - 0.0, 1.0, 1.0, 1.0, @@ -48741,6 +48777,7 @@ 1.0, 1.0, 1.0, + 0.0, 1.0, 1.0, 1.0, @@ -48802,160 +48839,49 @@ 1.0, 1.0, 1.0, - 0.0, 1.0, 1.0, 1.0, 1.0, - 1.0 - ], - "bakedValues": null - }, - "21": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 21, - "isRoot": false, - "parent": 19, - "rawValues": [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, 1.0, - 0.0, - 0.0, - 0.0, 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0 - ], - "bakedValues": null - }, - "22": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 22, - "isRoot": false, - "parent": 19, - "rawValues": [ - 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, - 0.0, - 0.0, - 0.0, 1.0, - 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, - 0.0, 1.0, - 0.0, 1.0, - 0.0, 1.0, 1.0, - 0.0, 1.0, - 0.0, 1.0, 1.0, - 0.0, - 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, - 0.0, 1.0, - 0.0, 1.0, - 0.0, - 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, - 0.0, 1.0, 1.0, - 0.0, 1.0, - 0.0, - 0.0, 1.0, - 0.0, - 0.0, - 0.0, 1.0, 1.0, 1.0, @@ -48965,29 +48891,12 @@ 1.0, 1.0, 1.0, - 0.0, 1.0, 1.0, 1.0, 1.0, - 0.0, - 0.0, 1.0, 1.0, - 0.0, - 1.0 - ], - "bakedValues": null - }, - "23": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 23, - "isRoot": false, - "parent": 20, - "rawValues": [ 1.0, 1.0, 1.0, @@ -49029,7 +48938,25 @@ 1.0, 1.0, 1.0, - 0.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, 1.0, 1.0, 1.0, @@ -49055,6 +48982,21 @@ 1.0, 1.0, 1.0, + 0.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, 1.0, 1.0, 1.0, @@ -49124,6 +49066,10 @@ 1.0, 1.0, 1.0, + 0.0, + 1.0, + 1.0, + 1.0, 1.0, 0.0, 1.0, @@ -49151,6 +49097,8 @@ 1.0, 1.0, 1.0, + 0.0, + 1.0, 1.0, 1.0, 1.0, @@ -49178,6 +49126,10 @@ 1.0, 1.0, 1.0, + 1.0, + 1.0, + 1.0, + 1.0, 0.0, 1.0, 1.0, @@ -49224,9 +49176,7 @@ 1.0, 1.0, 1.0, - 0.0, 1.0, - 0.0, 1.0, 1.0, 1.0, @@ -49240,6 +49190,11 @@ 1.0, 1.0, 1.0, + 0.0, + 1.0, + 1.0, + 1.0, + 1.0, 1.0, 1.0, 1.0, @@ -49280,7 +49235,6 @@ 1.0, 1.0, 1.0, - 0.0, 1.0, 1.0, 1.0, @@ -49327,16 +49281,13 @@ 1.0, 1.0, 1.0, - 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, - 0.0, 1.0, 1.0, - 0.0, 1.0, 1.0, 1.0, @@ -49352,6 +49303,8 @@ 1.0, 1.0, 1.0, + 0.0, + 1.0, 1.0, 1.0, 1.0, @@ -49359,7 +49312,6 @@ 1.0, 1.0, 1.0, - 0.0, 1.0, 1.0, 0.0, @@ -49372,10 +49324,12 @@ 1.0, 1.0, 1.0, - 0.0, 1.0, 1.0, - 0.0, + 1.0, + 1.0, + 1.0, + 1.0, 1.0, 1.0, 1.0, @@ -49420,7 +49374,6 @@ 1.0, 1.0, 1.0, - 0.0, 1.0, 1.0, 1.0, @@ -49441,61 +49394,129 @@ 1.0, 1.0, 1.0, + 0.0, + 1.0, + 1.0, + 1.0, 1.0, + 0.0, 1.0, + 1.0 + ], + "bakedValues": 1 + }, + "42": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 42, + "isRoot": false, + "parent": 40, + "rawValues": [ 1.0, 1.0, + 0.0, 1.0, + 0.0, 1.0, 1.0, 1.0, 1.0, + 0.0, 1.0, + 0.0, + 0.0, 1.0, 1.0, + 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, + 0.0, + 0.0, + 0.0, 1.0, + 0.0, + 0.0, 1.0, 1.0, + 0.0, + 0.0, 1.0, 1.0, + 0.0, 1.0, 1.0, + 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, + 0.0, 1.0, + 0.0, + 0.0, 1.0, 1.0, 1.0, 1.0, + 0.0, 1.0, 0.0, + 0.0, + 0.0, 1.0, + 0.0, + 0.0, + 0.0, 1.0, + 0.0, 1.0, + 0.0, 1.0, + 0.0, + 0.0, + 0.0, + 0.0, 1.0, 1.0, 1.0, + 0.0, 1.0, + 0.0, 1.0, + 0.0, 1.0, 1.0, + 0.0, + 0.0, 1.0, 1.0, + 0.0, + 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, + 1.0 + ], + "bakedValues": 1 + }, + "43": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 43, + "isRoot": false, + "parent": 40, + "rawValues": [ 1.0, 1.0, 1.0, @@ -49505,7 +49526,6 @@ 1.0, 1.0, 1.0, - 0.0, 1.0, 1.0, 1.0, @@ -49569,18 +49589,15 @@ 1.0, 1.0, 1.0, - 0.0, 1.0, 1.0, 1.0, 1.0, - 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, - 0.0, 1.0, 1.0, 1.0, @@ -49591,16 +49608,13 @@ 1.0, 1.0, 1.0, - 0.0, 1.0, 1.0, 1.0, 1.0, - 0.0, 1.0, 1.0, 1.0, - 0.0, 1.0, 1.0, 1.0, @@ -49638,6 +49652,17 @@ 1.0, 1.0, 1.0, + 0.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, 1.0, 1.0, 1.0, @@ -49654,11 +49679,8 @@ 1.0, 1.0, 1.0, - 0.0, 1.0, - 0.0, 1.0, - 0.0, 1.0, 1.0, 1.0, @@ -49708,7 +49730,6 @@ 1.0, 1.0, 1.0, - 0.0, 1.0, 1.0, 1.0, @@ -49736,7 +49757,6 @@ 1.0, 1.0, 1.0, - 0.0, 1.0, 1.0, 1.0, @@ -49746,19 +49766,10 @@ 1.0, 1.0, 1.0, - 1.0 - ], - "bakedValues": null - }, - "24": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 24, - "isRoot": false, - "parent": 20, - "rawValues": [ + 1.0, + 1.0, + 1.0, + 0.0, 1.0, 1.0, 1.0, @@ -49867,6 +49878,8 @@ 1.0, 1.0, 1.0, + 0.0, + 1.0, 1.0, 1.0, 1.0, @@ -49888,6 +49901,7 @@ 1.0, 1.0, 1.0, + 0.0, 1.0, 1.0, 1.0, @@ -49898,6 +49912,7 @@ 1.0, 1.0, 1.0, + 0.0, 1.0, 1.0, 1.0, @@ -50129,6 +50144,7 @@ 1.0, 1.0, 1.0, + 0.0, 1.0, 1.0, 1.0, @@ -50271,6 +50287,7 @@ 1.0, 1.0, 1.0, + 0.0, 1.0, 1.0, 1.0, @@ -50404,6 +50421,7 @@ 1.0, 1.0, 1.0, + 0.0, 1.0, 1.0, 1.0, @@ -50452,6 +50470,7 @@ 1.0, 1.0, 1.0, + 0.0, 1.0, 1.0, 1.0, @@ -50675,6 +50694,7 @@ 1.0, 1.0, 1.0, + 0.0, 1.0, 1.0, 1.0, @@ -50981,6 +51001,7 @@ 1.0, 1.0, 1.0, + 0.0, 1.0, 1.0, 1.0, @@ -51031,6 +51052,7 @@ 1.0, 1.0, 1.0, + 0.0, 1.0, 1.0, 1.0, @@ -51348,6 +51370,7 @@ 1.0, 1.0, 1.0, + 0.0, 1.0, 1.0, 1.0, @@ -51384,6 +51407,7 @@ 1.0, 1.0, 1.0, + 0.0, 1.0, 1.0, 1.0, @@ -51466,16 +51490,16 @@ 1.0, 1.0 ], - "bakedValues": null + "bakedValues": 1 }, - "27": { + "44": { "threshold": null, "feature": null, "leftID": null, "rightID": null, - "id": 27, + "id": 44, "isRoot": false, - "parent": 25, + "parent": 41, "rawValues": [ 1.0, 1.0, @@ -51504,7 +51528,6 @@ 1.0, 1.0, 1.0, - 0.0, 1.0, 1.0, 1.0, @@ -51550,7 +51573,6 @@ 1.0, 1.0, 1.0, - 0.0, 1.0, 1.0, 1.0, @@ -51592,7 +51614,6 @@ 1.0, 1.0, 1.0, - 0.0, 1.0, 1.0, 1.0, @@ -51625,7 +51646,6 @@ 1.0, 1.0, 1.0, - 0.0, 1.0, 1.0, 1.0, @@ -51636,7 +51656,6 @@ 1.0, 1.0, 1.0, - 0.0, 1.0, 1.0, 1.0, @@ -51649,7 +51668,6 @@ 1.0, 1.0, 1.0, - 0.0, 1.0, 1.0, 1.0, @@ -51664,7 +51682,6 @@ 1.0, 1.0, 1.0, - 0.0, 1.0, 1.0, 1.0, @@ -51677,17 +51694,15 @@ 1.0, 1.0, 1.0, - 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, - 0.0, 1.0, 1.0, - 0.0, + 1.0, 1.0, 1.0, 1.0, @@ -51739,6 +51754,8 @@ 1.0, 1.0, 1.0, + 0.0, + 1.0, 1.0, 1.0, 1.0, @@ -51764,7 +51781,6 @@ 1.0, 1.0, 1.0, - 0.0, 1.0, 1.0, 1.0, @@ -51780,19 +51796,6 @@ 1.0, 1.0, 1.0, - 1.0 - ], - "bakedValues": null - }, - "28": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 28, - "isRoot": false, - "parent": 25, - "rawValues": [ 1.0, 1.0, 1.0, @@ -52303,6 +52306,8 @@ 1.0, 1.0, 1.0, + 0.0, + 1.0, 1.0, 1.0, 1.0, @@ -52437,6 +52442,7 @@ 1.0, 1.0, 1.0, + 0.0, 1.0, 1.0, 1.0, @@ -52518,6 +52524,7 @@ 1.0, 1.0, 1.0, + 0.0, 1.0, 1.0, 1.0, @@ -52556,6 +52563,7 @@ 1.0, 1.0, 1.0, + 0.0, 1.0, 1.0, 1.0, @@ -52882,6 +52890,7 @@ 1.0, 1.0, 1.0, + 0.0, 1.0, 1.0, 1.0, @@ -52968,6 +52977,22 @@ 1.0, 1.0, 1.0, + 1.0, + 1.0, + 1.0, + 1.0 + ], + "bakedValues": 1 + }, + "45": { + "threshold": null, + "feature": null, + "leftID": null, + "rightID": null, + "id": 45, + "isRoot": false, + "parent": 41, + "rawValues": [ 1.0, 1.0, 1.0, @@ -53309,7 +53334,6 @@ 1.0, 1.0, 1.0, - 0.0, 1.0, 1.0, 1.0, @@ -54940,19 +54964,6 @@ 1.0, 1.0, 1.0, - 1.0 - ], - "bakedValues": null - }, - "29": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 29, - "isRoot": false, - "parent": 26, - "rawValues": [ 1.0, 1.0, 1.0, @@ -55226,7 +55237,6 @@ 1.0, 1.0, 1.0, - 0.0, 1.0, 1.0, 1.0, @@ -55408,19 +55418,6 @@ 1.0, 1.0, 1.0, - 1.0 - ], - "bakedValues": null - }, - "30": { - "threshold": null, - "feature": null, - "leftID": null, - "rightID": null, - "id": 30, - "isRoot": false, - "parent": 26, - "rawValues": [ 1.0, 1.0, 1.0, @@ -67635,6 +67632,9 @@ 1.0, 1.0, 1.0, + 0.0, + 1.0, + 1.0, 1.0, 1.0, 1.0, @@ -96378,7 +96378,7 @@ 1.0, 1.0 ], - "bakedValues": null + "bakedValues": 1 } } } \ No newline at end of file -- GitLab