聚类#

参数#

#include <cuvs/cluster/agglomerative.hpp>

namespace cuvs::cluster::agglomerative

enum Linkage#

确定计算最小生成树 (MST) 的方法

取值

enumerator PAIRWISE#

使用成对距离矩阵作为 MST 的输入。这非常快,是处理相当小的数据集(约 5 万个数据点)的最佳选择。

enumerator KNN_GRAPH#

构建 KNN 图作为 MST 的输入,并在 MST 不收敛时提供附加边。这速度较慢,但可扩展到非常大的数据集。

单链接聚类#

include <cuvs/cluster/agglomerative.hpp>

namespace cuvs::cluster::agglomerative

void single_linkage(
raft::resources const &handle,
raft::device_matrix_view<const float, int, raft::row_major> X,
raft::device_matrix_view<int, int, raft::row_major> dendrogram,
raft::device_vector_view<int, int> labels,
cuvs::distance::DistanceType metric,
size_t n_clusters,
cuvs::cluster::agglomerative::Linkage linkage = cuvs::cluster::agglomerative::Linkage::KNN_GRAPH,
std::optional<int> c = std::make_optional<int>(DEFAULT_CONST_C)
)#

单链接聚类,能够构建 KNN 图以将算法扩展到超出使用成对距离的全连接图实现的 n^2 内存消耗,当 k 不够大无法连接时,通过连接一个 knn 图来实现。

参数:
  • handle[in] raft handle

  • X[in] 行主序的密集输入矩阵

  • dendrogram[out] 输出树状图 (大小 [n_rows - 1] * 2)

  • labels[out] 输出标签向量 (大小 n_rows)

  • metric[in] 构建连通图时使用的距离度量

  • n_clusters[in] 要分配数据样本的聚类数量

  • linkage[in] 构建链接策略。PAIRWISE 使用更多内存,但对于较小数据集可能更快。KNN_GRAPH 允许控制内存使用(使用参数 c),代价是可能需要额外的最小生成树迭代。

  • c[in] 从 knn 图构建链接时使用的常数。允许间接控制 k。算法将设置 k = log(n) + c