球树#
- class sklearn.neighbors.BallTree#
- 用于快速解决广义 N 点问题的球树 - 更多信息请参见 用户指南. - 参数:
- X形状为 (n_samples, n_features) 的类数组
- n_samples 是数据集中的点数,n_features 是参数空间的维数。注意:如果 X 是一个 C 连续的双精度数组,则不会复制数据。否则,将进行内部复制。 
- leaf_size正整数,默认为 40
- 切换到暴力搜索的点数。更改`leaf_size`不会影响查询结果,但会显著影响查询速度和存储构建树所需的内存。存储树所需的内存量大约与 `n_samples / leaf_size`成比例。对于指定的 - leaf_size,叶节点保证满足- leaf_size <= n_points <= 2 * leaf_size,除非- n_samples < leaf_size。
- metricstr 或 DistanceMetric64 对象,默认值为“minkowski”
- 用于距离计算的度量。默认为“minkowski”,当 p = 2 时,结果为标准欧几里德距离。BallTree 的有效度量列表由属性 - valid_metrics给出。有关任何距离度量的更多信息,请参阅scipy.spatial.distance的文档和- distance_metrics中列出的度量。
- 附加关键字将传递给距离度量类。
- 注意:`metric`参数中的可调用函数**不支持**KDTree
- 和Ball Tree。函数调用的开销将导致性能非常差。
 
- 属性:
- data内存视图
- 训练数据 
- valid_metrics:str 列表
- 有效的距离度量列表。 
 
 - 示例 - 查询 k 近邻 - >>> import numpy as np >>> from sklearn.neighbors import BallTree >>> rng = np.random.RandomState(0) >>> X = rng.random_sample((10, 3)) # 10 points in 3 dimensions >>> tree = BallTree(X, leaf_size=2) >>> dist, ind = tree.query(X[:1], k=3) >>> print(ind) # indices of 3 closest neighbors [0 3 1] >>> print(dist) # distances to 3 closest neighbors [ 0. 0.19662693 0.29473397] - 序列化和反序列化树。请注意,树的状态保存在序列化操作中:在反序列化时不需要重建树。 - >>> import numpy as np >>> import pickle >>> rng = np.random.RandomState(0) >>> X = rng.random_sample((10, 3)) # 10 points in 3 dimensions >>> tree = BallTree(X, leaf_size=2) >>> s = pickle.dumps(tree) >>> tree_copy = pickle.loads(s) >>> dist, ind = tree_copy.query(X[:1], k=3) >>> print(ind) # indices of 3 closest neighbors [0 3 1] >>> print(dist) # distances to 3 closest neighbors [ 0. 0.19662693 0.29473397] - 查询给定半径内的邻居 - >>> import numpy as np >>> rng = np.random.RandomState(0) >>> X = rng.random_sample((10, 3)) # 10 points in 3 dimensions >>> tree = BallTree(X, leaf_size=2) >>> print(tree.query_radius(X[:1], r=0.3, count_only=True)) 3 >>> ind = tree.query_radius(X[:1], r=0.3) >>> print(ind) # indices of neighbors within distance 0.3 [3 0 1] - 计算高斯核密度估计 - >>> import numpy as np >>> rng = np.random.RandomState(42) >>> X = rng.random_sample((100, 3)) >>> tree = BallTree(X) >>> tree.kernel_density(X[:3], h=0.1, kernel='gaussian') array([ 6.94114649, 7.83281226, 7.2071716 ]) - 计算两点自相关函数 - >>> import numpy as np >>> rng = np.random.RandomState(0) >>> X = rng.random_sample((30, 3)) >>> r = np.linspace(0, 1, 5) >>> tree = BallTree(X) >>> tree.two_point_correlation(X, r) array([ 30, 62, 278, 580, 820]) - get_arrays()#
- 获取数据和节点数组。 - 返回:
- arrays:数组元组
- 用于存储树数据、索引、节点数据和节点边界的数组。 
 
 
 - get_n_calls()#
- 获取调用次数。 - 返回:
- n_calls:int
- 距离计算调用的次数 
 
 
 - get_tree_stats()#
- 获取树的状态。 - 返回:
- tree_stats:int 元组
- (修剪次数、叶子数、分割次数) 
 
 
 - kernel_density(X, h, kernel='gaussian', atol=0, rtol=1E-8, breadth_first=True, return_log=False)#
- 使用在树创建时指定的距离度量,使用给定的内核计算点 X 处的核密度估计。 - 参数:
- X形状为 (n_samples, n_features) 的类数组
- 要查询的点数组。最后一维应与训练数据的维数匹配。 
- hfloat
- 内核的带宽 
- kernelstr,默认值为“gaussian”
- 指定要使用的内核。选项包括 - 'gaussian' - 'tophat' - 'epanechnikov' - 'exponential' - 'linear' - 'cosine' 默认值为 kernel = 'gaussian' 
- atolfloat,默认值为 0
- 指定结果所需的绝对容差。如果真实结果为 - K_true,则返回的结果- K_ret满足- abs(K_true - K_ret) < atol + rtol * K_ret默认值为零(即机器精度)。
- rtolfloat,默认值为 1e-8
- 指定结果所需的相对容差。如果真实结果为 - K_true,则返回的结果- K_ret满足- abs(K_true - K_ret) < atol + rtol * K_ret默认值为- 1e-8(即机器精度)。
- breadth_firstbool,默认值为 False
- 如果为 True,则使用广度优先搜索。如果为 False(默认值),则使用深度优先搜索。对于紧凑的内核和/或高容差,广度优先搜索通常更快。 
- return_logbool,默认值为 False
- 返回结果的对数。对于窄内核,这可能比返回结果本身更准确。 
 
- 返回:
- density形状为 X.shape[:-1] 的 ndarray
- (对数)密度评估的数组 
 
 
 - query(X, k=1, return_distance=True, dualtree=False, breadth_first=False)#
- 查询树的 k 近邻 - 参数:
- X形状为 (n_samples, n_features) 的类数组
- 要查询的点数组 
- kint,默认值为 1
- 要返回的最近邻居的数量 
- return_distancebool,默认值为 True
- 如果为 True,则返回距离和索引的元组 (d, i);如果为 False,则返回数组 i 
- dualtreebool,默认值为 False
- 如果为 True,则对查询使用双树形式:为查询点构建一棵树,并使用这对树来有效地搜索该空间。随着点数的增加,这可以提高性能。 
- breadth_firstbool,默认值为 False
- 如果为 True,则以广度优先方式查询节点。否则,以深度优先方式查询节点。 
- sort_resultsbool,默认值为 True
- 如果为 True,则在返回时对每个点的距离和索引进行排序,以便第一列包含最接近的点。否则,邻居将以任意顺序返回。 
 
- 返回:
- i如果 return_distance == False
- (d,i)如果 return_distance == True
- d形状为 X.shape[:-1] + (k,) 的 ndarray,dtype=double
- 每个条目都给出对应点的邻居的距离列表。 
- i形状为 X.shape[:-1] + (k,) 的 ndarray,dtype=int
- 每个条目都给出对应点的邻居的索引列表。 
 
 
 - query_radius(X, r, return_distance=False, count_only=False, sort_results=False)#
- 查询树中半径为 r 内的邻居。 - 参数:
- X形状为 (n_samples, n_features) 的类数组
- 要查询的点数组 
- r返回邻居的距离
- r 可以是单个值,如果需要为每个点设置不同的半径,则可以是形状为 x.shape[:-1] 的数组。 
- return_distance布尔值,默认为 False
- 如果为 True,则返回每个点的邻居的距离;如果为 False,则仅返回邻居。注意,与 query() 方法不同,在此处将 return_distance 设置为 True 会增加计算时间。对于 return_distance=False,并非所有距离都需要显式计算。结果默认情况下不排序:参见 - sort_results关键字。
- count_only布尔值,默认为 False
- 如果为 True,则仅返回距离 r 内的点数;如果为 False,则返回距离 r 内所有点的索引。如果 return_distance==True,则将 count_only 设置为 True 会导致错误。 
- sort_results布尔值,默认为 False
- 如果为 True,则在返回距离和索引之前对其进行排序;如果为 False,则结果不排序。如果 return_distance == False,则将 sort_results 设置为 True 会导致错误。 
 
- 返回:
- count如果 count_only == True
- ind如果 count_only == False 且 return_distance == False
- (ind, dist)如果 count_only == False 且 return_distance == True
- count形状为 X.shape[:-1]、数据类型为 int 的 ndarray
- 每个条目给出对应点距离 r 内的邻居数量。 
- ind形状为 X.shape[:-1]、数据类型为 object 的 ndarray
- 每个元素都是一个 numpy 整数数组,列出对应点的邻居索引。请注意,与 k-近邻查询的结果不同,返回的邻居默认情况下不按距离排序。 
- dist形状为 X.shape[:-1]、数据类型为 object 的 ndarray
- 每个元素都是一个 numpy 双精度数组,列出与 i 中索引对应的距离。 
 
 
 - reset_n_calls()#
- 将调用次数重置为 0。 
 - two_point_correlation(X, r, dualtree=False)#
- 计算二点关联函数。 - 参数:
- X形状为 (n_samples, n_features) 的类数组
- 要查询的点数组。最后一维应与训练数据的维数匹配。 
- r类数组
- 一维距离数组。 
- dualtreebool,默认值为 False
- 如果为 True,则使用双树算法;否则,使用单树算法。对于大型 N,双树算法具有更好的缩放性。 
 
- 返回:
- countsndarray
- counts[i] 包含距离小于或等于 r[i] 的点对的数量。 
 
 
 
