当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python cuml.neighbors.NearestNeighbors用法及代码示例


用法:

class cuml.neighbors.NearestNeighbors(*, n_neighbors=5, verbose=False, handle=None, algorithm='auto', metric='euclidean', p=2, algo_params=None, metric_params=None, output_type=None, **kwargs)

NearestNeighbors 是从一组给定的数据点查询邻域。目前,cuML 支持k-NN 查询,将邻域定义为与每个查询点最近的k 邻居。

参数

n_neighborsint(默认值=5)

要查询的默认邻居数

verboseint 或布尔值,默认=False

设置日志记录级别。它必须是 cuml.common.logger.level_* 之一。有关详细信息,请参阅详细级别。

handlecuml.Handle

指定 cuml.handle 保存用于此模型中计算的内部 CUDA 状态。最重要的是,这指定了将用于模型计算的 CUDA 流,因此用户可以通过在多个流中创建句柄在不同的流中同时运行不同的模型。如果为 None,则创建一个新的。

algorithm字符串(默认='brute')

要使用的查询算法。有效的选项是:

  • 'auto':根据数据形状和度量自动选择蛮力或随机球盖
  • 'rbc' :用于随机球算法,它划分数据空间并使用三角不等式来降低潜在距离的数量。目前,该算法支持 2d Euclidean 和 Haversine。
  • 'brute' :对于蛮力,缓慢但产生准确的结果
  • 'ivfflat' : 对于倒排文件,将数据集划分为分区并仅在相关分区上执行搜索
  • 'ivfpq' :对于倒排文件和乘积量化,与倒排列表相同,此外向量在 n_features/M sub-vectors 中被破坏,这要归功于中间的 k-means 聚类。这种编码提供部分信息,允许更快的距离计算
  • 'ivfsq' : 用于倒排文件和标量量化,与倒排列表相同,此外矢量分量被量化为简化的二进制表示,允许更快的距离计算
metric字符串(默认='欧几里得')。

要使用的距离度量。支持的距离是 [‘l1, ‘cityblock’, ‘taxicab’, ‘manhattan’, ‘euclidean’, ‘l2’, ‘braycurtis’, ‘canberra’, ‘minkowski’, ‘chebyshev’, ‘jensenshannon’, ‘cosine’, ‘correlation’]

pfloat (default=2) Minkowski 度量的参数。当 p = 1 时,这

当 p = 2 时,等效于曼哈顿距离 (l1),欧几里得距离 (l2)。对于任意 p,使用 minkowski 距离 (lp)。

algo_paramsdict,可选(默认=无)

用于控制不同最近邻算法行为的命名参数。

当 algorithm='brute' 并且输入稀疏时:

  • batch_size_index: (int) 每批索引数组的行数

  • batch_size_query: (int) 每批查询数组的行数

metric_expandedbool

通过使用扩展形式而不计算 n-th 根,可以提高基于 Minkowski (Lp) 指标的性能(对于 p > 1)。

algo_paramsdict, optional (default = None) 用于配置

使用最近邻算法。如果设置为无,参数将自动生成。算法'ivfflat'的参数:

  • nlist:(int)将数据集划分为的单元格数

  • nprobe:(int)在查询时,用于搜索的单元格数

算法'ivfpq'的参数:

  • nlist:(int)将数据集划分为的单元格数

  • nprobe:(int)在查询时,用于搜索的单元格数

  • M:(int)子量化器的数量

  • n_bits:为每个子量化器分配的 (int) 位

  • usePrecomputedTables: (bool) 是否使用预计算表

算法'ivfsq'的参数:

  • nlist:(int)将数据集划分为的单元格数

  • nprobe:(int)在查询时,用于搜索的单元格数

  • qtype:(字符串)量化器类型(QT_8bit、QT_4bit、QT_8bit_uniform、QT_4bit_uniform、QT_fp16、QT_8bit_direct、QT_6bit)

  • encodeResidual: (bool) 是否编码残差

metric_paramsdict,可选(默认 = 无)

这目前被忽略。

output_type{‘input’, ‘cudf’, ‘cupy’, ‘numpy’, ‘numba’},默认=无

用于控制估计器的结果和属性的输出类型的变量。如果为 None,它将继承在模块级别设置的输出类型 cuml.global_settings.output_type 。有关详细信息,请参阅输出数据类型配置。

注意

警告:近似最近邻方法在此版本的 cuML 中可能不稳定。这是由于此 cuML 版本链接到的 FAISS 版本中的一个已知问题。 (参见 cuML 问题 #4020)

警告:为了与依赖 scikit-learn 的库兼容,kwargs 允许传递类构造函数中不明确的参数,例如 ‘n_jobs’,但它们对行为没有影响。

有关其他示例,请参见 the NearestNeighbors notebook

有关其他文档,请参阅 scikit-learn’s NearestNeighbors

例子

import cudf
from cuml.neighbors import NearestNeighbors
from cuml.datasets import make_blobs

X, _ = make_blobs(n_samples=25, centers=5,
                    n_features=10, random_state=42)

# build a cudf Dataframe
X_cudf = cudf.DataFrame(X)

# fit model
model = NearestNeighbors(n_neighbors=3)
model.fit(X)

# get 3 nearest neighbors
distances, indices = model.kneighbors(X_cudf)

# print results
print(indices)
print(distances)

输出:

indices:

     0   1   2
0    0  14  21
1    1  19   8
2    2   9  23
3    3  14  21
...

22  22  18  11
23  23  16   9
24  24  17  10

distances:

      0         1         2
0   0.0  4.883116  5.570006
1   0.0  3.047896  4.105496
2   0.0  3.558557  3.567704
3   0.0  3.806127  3.880100
...

22  0.0  4.210738  4.227068
23  0.0  3.357889  3.404269
24  0.0  3.428183  3.818043

属性

X_m

相关用法


注:本文由纯净天空筛选整理自rapids.ai大神的英文原创作品 cuml.neighbors.NearestNeighbors。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。