注意

RAFT 中的向量搜索和聚类算法正在迁移到一个名为 cuVS 的新库,该库专门用于向量搜索。在迁移过程中,我们将继续支持 RAFT 中的向量搜索算法,但在 RAPIDS 24.06 (六月) 发布后将不再更新它们。我们计划在 RAPIDS 24.10 (十月) 发布之前完成迁移,并在 24.12 (十二月) 发布中将它们从 RAFT 中完全移除。

概率与信息论#

列联矩阵#

#include <raft/stats/contingency_matrix.cuh>

namespace raft::stats

template<typename value_t, typename idx_t>
void get_input_class_cardinality(raft::resources const &handle, raft::device_vector_view<const value_t, idx_t> groundTruth, raft::host_scalar_view<value_t> minLabel, raft::host_scalar_view<value_t> maxLabel)#

使用此函数分配输出矩阵的大小,矩阵大小 = (maxLabel - minLabel + 1)^2 * sizeof(int)

模板参数:
  • **value_t** – 标签类型

  • **idx_t** – 矩阵范围的索引类型。

参数:
  • **handle** – **[in]** RAFT 句柄。

  • **groundTruth** – **[in]** 地面实况的设备一维数组(行数)

  • **minLabel** – **[out]** 输入数组中计算得到的最小值

  • **maxLabel** – **[out]** 输入数组中计算得到的最大值

template<typename value_t, typename out_t, typename idx_t, typename layout_t, typename opt_min_label_t, typename opt_max_label_t>
void contingency_matrix(raft::resources const &handle, raft::device_vector_view<const value_t, idx_t> ground_truth, raft::device_vector_view<const value_t, idx_t> predicted_label, raft::device_matrix_view<out_t, idx_t, layout_t> out_mat, opt_min_label_t &&opt_min_label, opt_max_label_t &&opt_max_label)#

根据输入的地面实况和预测标签构建列联矩阵。用户应调用函数 getInputClassCardinality 来查找并分配输出内存。类似地,工作空间需求应使用函数 getContingencyMatrixWorkspaceSize 进行检查

模板参数:
  • **value_t** – 标签类型

  • **out_t** – 输出矩阵类型

  • **idx_t** – 矩阵范围的索引类型。

  • **layout_t** – 输入数据的布局类型。

  • **opt_min_label_t** – std::optional<value_t> `opt_min_label`

  • **opt_max_label_t** – std::optional<value_t> `opt_max_label`

参数:
  • **handle** – **[in]** RAFT 句柄。

  • **ground_truth** – **[in]** 地面实况的设备一维数组(行数)

  • **predicted_label** – **[in]** 预测的设备一维数组(列数)

  • **out_mat** – **[out]** 列联矩阵的输出缓冲区

  • **opt_min_label** – **[in]** std::optional,输入地面实况数组中的最小值

  • **opt_max_label** – **[in]** std::optional,输入地面实况数组中的最大值

#

#include <raft/stats/entropy.cuh>

namespace raft::stats

template<typename value_t, typename idx_t>
double entropy(raft::resources const &handle, raft::device_vector_view<const value_t, idx_t> cluster_array, const value_t lower_label_range, const value_t upper_label_range)#

计算熵的函数 更多关于熵的信息

模板参数:
  • **value_t** – 数据类型

  • **idx_t** – 索引类型

参数:
  • **handle** – **[in]** RAFT 句柄

  • **cluster_array** – **[in]** value_t 类型的类别数组

  • **lower_label_range** – **[in]** 标签范围的下界

  • **upper_label_range** – **[in]** 标签范围的上界

返回值:

熵得分

KL 散度#

#include <raft/stats/kl_divergence.cuh>

namespace raft::stats

template<typename value_t, typename idx_t>
value_t kl_divergence(raft::resources const &handle, raft::device_vector_view<const value_t, idx_t> modelPDF, raft::device_vector_view<const value_t, idx_t> candidatePDF)#

计算 KL 散度的函数 更多关于 KL 散度的信息

模板参数:
  • **value_t** – 输入数组的数据类型

  • **idx_t** – 索引类型

参数:
  • **handle** – **[in]** RAFT 句柄

  • **modelPDF** – **[in]** value_t 类型的模型概率密度函数数组

  • **candidatePDF** – **[in]** value_t 类型的候选概率密度函数数组

返回值:

KL 散度值

互信息#

#include <raft/stats/mutual_info_score.cuh>

namespace raft::stats

template<typename value_t, typename idx_t>
double mutual_info_score(raft::resources const &handle, raft::device_vector_view<const value_t, idx_t> first_cluster_array, raft::device_vector_view<const value_t, idx_t> second_cluster_array, value_t lower_label_range, value_t upper_label_range)#

计算两个聚类之间互信息的函数 更多关于互信息的信息

模板参数:
  • **value_t** – 数据类型

  • **idx_t** – 索引类型

参数:
  • **handle** – **[in]** RAFT 句柄

  • **first_cluster_array** – **[in]** value_t 类型的第一个类别数组

  • **second_cluster_array** – **[in]** value_t 类型的第二个类别数组

  • **lower_label_range** – **[in]** 标签范围的下界

  • **upper_label_range** – **[in]** 标签范围的上界

返回值:

互信息得分