В настоящее время играется с модулем KDTree от sklearn Кажется, я не могу найти информацию о том, как выполняется расщепление, или о структуре дерева. Я подозреваю, что он спрятан в функции get_arrays
, но не может его понять.
Для простого массива
X = array([[0, 4],
[0, 1],
[2, 3],
[4, 1],
[2, 2]])
И, выполнив
kdtree = KDTree(X, leaf_size=1)
kdtree.get_arrays()
Я получаю следующее:
(array([[0., 4.],
[0., 1.],
[2., 3.],
[4., 1.],
[2., 2.]]),
array([1, 0, 2, 4, 3]),
array([(0, 5, 0, 2.5 ), (0, 2, 0, 1.5 ),
(2, 5, 0, 1.41421356), (0, 1, 1, 0. ),
(1, 2, 1, 0. ), (2, 3, 1, 0. ),
(3, 5, 1, 1.11803399)],
dtype=[('idx_start', '<i8'), ('idx_end', '<i8'), ('is_leaf', '<i8'), ('radius', '<f8')]),
array([[[0., 1.],
[0., 1.],
[2., 1.],
[0., 1.],
[0., 4.],
[2., 3.],
[2., 1.]],
[[4., 4.],
[0., 4.],
[4., 3.],
[0., 1.],
[0., 4.],
[2., 3.],
[4., 2.]]]))