层次聚类算法(Hierarchical Clustering)的统一二维表入口。
数据流:特征表 →(distanceMatrix)→ 距离矩阵表 →(hca / hcut)→ 聚类树 / 带 cluster 标签的表
层次聚类算法(Hierarchical Clustering)的统一二维表入口。
数据流:特征表 →(distanceMatrix)→ 距离矩阵表 →(hca / hcut)→ 聚类树 / 带 cluster 标签的表
01 Syntax
02 Methods
| Name | Overloads | Summary |
|---|---|---|
| distanceMatrix | 1 | 将特征矩阵形式的二维表转换为对称距离矩阵形式的二维表。 返回的新表中:features 为 n x n 的对称距离矩阵(对角线为 0), rowNames 与 featureNames 均为样本名,并继承源表的标签列与名称/描述信息。 vb Dim dist = x.distanceMatrix() Dim tree = dist.hca() |
| hca | 1 | 对距离矩阵形式的二维表执行凝聚层次聚类,返回聚类树(dendrogram)。 注意:传入的 NumericTable 必须是距离矩阵! 如果 source 是原始的特征矩阵,请先调用 HierarchicalClusteringTableExtensions.distanceMatrix()) 将特征矩阵转换为距离矩阵形式的二维表, 然后… |
| hcut | 2 | 对距离矩阵形式的二维表执行层次聚类,并按照距离阈值 threshold 切分聚类树(复用既有的扁平切分实现),将得到的类编号写入 cluster 标签列之后返回原表。 注意:传入的 NumericTable 必须是距离矩阵! 如果 source 是原始的特征矩阵,请先调用 HierarchicalClusteringTableExtens… |
| assertDistanceMatrix | 1 | 校验目标表是否为距离矩阵(方阵),并给出醒目的转换提示 |
| assertUniqueNames | 1 | 获取唯一的样本名数组(距离矩阵的行列名以及层次聚类的输入都要求样本名唯一) |
| cutTree | 1 | 按目标簇数量对聚类树进行切分:反复挑选“叶数最多且仍然可以分裂”的节点, 用其子节点替换之,直到簇的数量达到 k 或者已经没有可分裂的节点。 |
| writeClusterLabels | 1 | 将扁平化的簇集合写入 cluster 标签列并返回原表 |
| collectLeafs | 1 | 递归的收集一个簇(子树)之中所有叶节点的名称 |
03 Members
NumericTable, Func(Of Double(), Double(), Double))将特征矩阵形式的二维表转换为对称距离矩阵形式的二维表。
返回的新表中:features 为 n x n 的对称距离矩阵(对角线为 0), rowNames 与 featureNames 均为样本名,并继承源表的标签列与名称/描述信息。
Dim dist = x.distanceMatrix()
Dim tree = dist.hca()| Name | Type | Description |
|---|---|---|
source | NumericTable | 特征矩阵形式的二维表(每一行为一个样本,每一列为一个特征) |
metric | Func(Of Double(), Double(), Double) | 距离度量函数,缺省为欧氏距离 |
距离矩阵形式的二维表
对距离矩阵形式的二维表执行凝聚层次聚类,返回聚类树(dendrogram)。
注意:传入的 NumericTable 必须是距离矩阵! 如果 source 是原始的特征矩阵,请先调用 HierarchicalClusteringTableExtensions.distanceMatrix() 将特征矩阵转换为距离矩阵形式的二维表, 然后再进行层次聚类:
Dim dist = x.distanceMatrix()
Dim tree = dist.hca()| Name | Type | Description |
|---|---|---|
source | NumericTable | 距离矩阵形式的二维表(方阵: |
linkage | LinkageStrategy | 连接策略,缺省为平均连接 AverageLinkageStrategy |
silent | Boolean | 是否静默运行(不输出进度信息),缺省为 True |
层次聚类树(根节点)
对距离矩阵形式的二维表执行层次聚类,并按照目标簇数量 k 切分聚类树, 将得到的类编号写入 cluster 标签列之后返回原表。
注意:传入的 NumericTable 必须是距离矩阵! 如果 source 是原始的特征矩阵,请先调用 HierarchicalClusteringTableExtensions.distanceMatrix() 进行转换:
Dim flat = x.distanceMatrix().hcut(k:=3)| Name | Type | Description |
|---|---|---|
source | NumericTable | 距离矩阵形式的二维表(方阵),注意:不是特征矩阵! |
k | Int32 | 目标簇数量 |
linkage | LinkageStrategy | 连接策略,缺省为平均连接 AverageLinkageStrategy |
silent | Boolean | 是否静默运行,缺省为 True |
写入 cluster 标签之后的原表对象
对距离矩阵形式的二维表执行层次聚类,并按照距离阈值 threshold 切分聚类树(复用既有的扁平切分实现),将得到的类编号写入 cluster 标签列之后返回原表。
注意:传入的 NumericTable 必须是距离矩阵! 如果 source 是原始的特征矩阵,请先调用 HierarchicalClusteringTableExtensions.distanceMatrix() 进行转换:
Dim flat = x.distanceMatrix().hcut(threshold:=5.0)| Name | Type | Description |
|---|---|---|
source | NumericTable | 距离矩阵形式的二维表(方阵),注意:不是特征矩阵! |
threshold | Double | 距离阈值,小于该阈值的簇会被合并 |
linkage | LinkageStrategy | 连接策略,缺省为平均连接 AverageLinkageStrategy |
silent | Boolean | 是否静默运行,缺省为 True |
写入 cluster 标签之后的原表对象
NumericTable, String)校验目标表是否为距离矩阵(方阵),并给出醒目的转换提示
NumericTable)获取唯一的样本名数组(距离矩阵的行列名以及层次聚类的输入都要求样本名唯一)
Int32)按目标簇数量对聚类树进行切分:反复挑选“叶数最多且仍然可以分裂”的节点, 用其子节点替换之,直到簇的数量达到 k 或者已经没有可分裂的节点。
NumericTable, IEnumerable(Of Cluster))将扁平化的簇集合写入 cluster 标签列并返回原表
递归的收集一个簇(子树)之中所有叶节点的名称