當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。