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))
'''
相关推荐
算AI17 小时前
人工智能+牙科:临床应用中的几个问题
人工智能·算法
hyshhhh19 小时前
【算法岗面试题】深度学习中如何防止过拟合?
网络·人工智能·深度学习·神经网络·算法·计算机视觉
杉之19 小时前
选择排序笔记
java·算法·排序算法
吴梓穆20 小时前
UE5学习笔记 FPS游戏制作38 继承标准UI
笔记·学习·ue5
烂蜻蜓20 小时前
C 语言中的递归:概念、应用与实例解析
c语言·数据结构·算法
OYangxf20 小时前
图论----拓扑排序
算法·图论
我要昵称干什么20 小时前
基于S函数的simulink仿真
人工智能·算法
AndrewHZ20 小时前
【图像处理基石】什么是tone mapping?
图像处理·人工智能·算法·计算机视觉·hdr
念九_ysl20 小时前
基数排序算法解析与TypeScript实现
前端·算法·typescript·排序算法
守正出琦20 小时前
日期类的实现
数据结构·c++·算法