sklearn 笔记: neighbors.BallTree

球树结构

1 基本使用方法

python 复制代码
sklearn.neighbors.BallTree(
    X, 
    leaf_size=40, 
    metric='minkowski', 
    **kwargs)

2 主要参数说明

|-----------|--------------------------------------------------------------------------------|
| X | * 输入数据,维度为 (n_samples, n_features) * n_samples 是数据集中点的数量 * n_features 是参数空间的维数 |
| leaf_size | * 点数少于多少时,切换到暴力搜索 * 更改 leaf_size 不会影响查询结果,但可能会显著影响查询速度和构建树所需的内存 |
| metric | 度量距离 |

3 举例

3.1 最近的K个邻居

python 复制代码
import numpy as np
from sklearn.neighbors import BallTree
X = np.random.randn(10,3)
tree = BallTree(X, leaf_size=2)              
dist, ind = tree.query(X[:2], k=3)                

print(ind)  
# 最近的k个邻居的index
'''
[[0 4 5]
 [1 2 8]]
'''

print(dist)  
# 最近的k个邻居的距离
'''
[[0.         0.86677441 1.16406937]
 [0.         0.95190704 1.32997164]]
'''

3.2 位于查询点指定半径内的所有邻居点

  • 查找位于每个查询点半径内的点的索引
python 复制代码
query_radius(
    X, 
    r, 
    return_distance=False, 
    count_only=False, 
    sort_results=False)

|-------------------|------------------------------------------------------|
| X | * 查询点的坐标(n_queries, n_features) |
| r | float 或一维数组,表示查询半径 |
| count_only | bool,默认为 False。 如果为 True,则只返回每个查询点内邻居点的数量,而不返回邻居点的索引 |
| return_distance | bool,默认为 False。如果为 True,则返回每个查询点到其邻居点的距离列表 |

python 复制代码
import numpy as np
from sklearn.neighbors import BallTree
X = np.random.randn(10,3)
tree = BallTree(X, leaf_size=2)              

tree.query_radius(X[:2],r=[0.1,5])
'''
array([array([0], dtype=int64),
       array([6, 2, 4, 7, 8, 1, 0, 3, 9, 5], dtype=int64)], dtype=object)
'''
python 复制代码
import numpy as np
from sklearn.neighbors import BallTree
X = np.random.randn(10,3)
tree = BallTree(X, leaf_size=2)              

tree.query_radius(X[:2],r=[0.1,5],return_distance=True)
'''
(array([array([0], dtype=int64),
        array([8, 2, 3, 6, 1, 9, 7, 0, 5, 4], dtype=int64)], dtype=object),
 array([array([0.]),
        array([2.18948629, 1.05002031, 1.48036256, 1.54854719, 0.        ,
               2.37799982, 3.36371823, 2.63138373, 2.54630893, 3.57322436])],
       dtype=object))
'''
相关推荐
祁_z2 分钟前
大模型轻量化:模型格式选型(ONNX/GGUF/TFLite) + 压缩三剑客(量化/剪枝/蒸馏)+ 大模型推理执行流程介绍
算法·机器学习·剪枝·量化·蒸馏·大模型轻量化
绛橘色的日落(。・∀・)ノ19 分钟前
机器学习之手写数字识别
算法
流年如夢24 分钟前
单链表Ⅲ(LeetCode)
数据结构·算法·leetcode·职场和发展
鉴生Eric40 分钟前
FOR算法中的AI智能体具体如何实现频谱感知和动态信道选择?请用技术术语详细说明其决策流程
人工智能·算法
量子炒饭大师41 分钟前
【优化算法】双指针算法的「义体化」重构 ——【双指针】双指针算法中的指针是如何定义的?如何使用它进行一些简单的算法?
c++·算法·重构·优化算法·双指针
通信小呆呆1 小时前
ZC序列符号同步:多径信道下的四种经典算法
算法
机器学习之心HML1 小时前
粒子群算法求解速冻食品冷链配送路径优化问题,MATLAB代码
算法·matlab·冷链配送路径优化
fie88891 小时前
基于粒子群优化(PSO)算法的带STATCOM的IEEE 30节点系统最优潮流MATLAB实现
开发语言·算法·matlab
hele_two1 小时前
SDL2高效画实心圆的算法(一)
c++·算法·图形渲染
cheems95271 小时前
[算法手记] 动态规划,二叉树计数问题
算法·动态规划