Ответ 1
Существует хорошая причина, почему пакет NN не делает этого.
Причина в том, что "структура данных NN" обязательно включает в себя все входные точки данных (в виде KD tree), поэтому нет экономии пространства для входных данных. Похоже, что было бы экономить время, когда вам не пришлось бы повторно создавать KD-дерево для каждого нового ввода, но это не так, увы.
Причина в том, что время создания KD-дерева в общем случае хуже, чем linearithmic. Это означает, что для больших входов имеет смысл сортировать данные перед построением KD-дерева, поскольку это приведет к быстрому созданию KD-дерева, и оно будет лучше сбалансировано, что также улучшит поиск (это также хуже логарифмического, в целом). Этот подход ускорит моделирование и оценку, но, конечно, будет препятствовать инкрементным обновлениям.
Лучше всего, я думаю, если найти общий пакет KD-tree и использовать его вместо этого.