【问题标题】:Julia: extracting clustering indicesJulia:提取聚类索引
【发布时间】:2020-11-12 21:43:13
【问题描述】:

我正在使用 julia 的 Clustering 包在 UMAP 的输出上获取 dbscan 聚类结果,但我一直在尝试从 DBscanresult 数据结构中获取集群索引。我的目标是将簇索引作为 2D 散点图的向量传递,但我找不到从 dbscan 结果中获取该向量的方法。

Julia 在 dbscan 下实现了两种方法。我正在使用adjacency list implementation,它采用 n x d 点坐标数组(下面的 umapresults)。

db = dbscan(umapresults, .1, min_neighbors = 10, min_cluster_size = 10)

产生结果:

13-element Array{DbscanCluster,1}:
 DbscanCluster(17, [4, 12, 84, 90, 94, 675, 676, 737, 873, 965], [27, 108, 177, 880, 954, 1050, 1067])
 DbscanCluster(10, Int64[], [46, 48, 51, 57, 188, 225, 226, 228, 270, 542])
 DbscanCluster(11, [48, 51, 228], [46, 49, 57, 188, 225, 226, 270, 542])
 DbscanCluster(14, [418, 759, 832, 988, 1046], [830, 831, 855, 865, 989, 991, 996, 1021, 1070])
 DbscanCluster(10, Int64[], [624, 654, 664, 803, 805, 821, 859, 987, 1057, 1069]) ...

但是 ACAICD 没有直接的方法可以从这些结果中获得唯一的集群索引。

理想情况下,我想要一个产生独特分配的实现:

assignments::Vector{Int}: vector of clusters indices, where each point was assigned to a single cluster

这个方法确实存在,并且是为 dbscan 的“距离矩阵”版本实现的,但对于“邻接列表”实现,没有等效的方法。

您的见解将不胜感激。

【问题讨论】:

    标签: julia cluster-analysis dbscan


    【解决方案1】:

    感谢@nils-gudat,我找到了适合我的答案。直到我必须将getproperty() 广播到生成的结构中,并在getproperty.() 后面加上一个点。对于邻接列表方法,dbscan() 中的结果结构 DbscanCluster 有三个字段,它们是:

    DBSCAN

    dbscan 函数返回的簇(基于点坐标的实现)

    字段

    • size::Int: 簇中的点数(核心+边界)
    • core_indices::Vector{Int}: 集群核心点的索引
    • boundary_indices::Vector{Int}: 集群边界上的点索引

    没有“赋值”,就像基于距离的矩阵方法一样,所以如果我必须通过广播返回core_indices 向量:

    getproperty.(drb, :core_indices)
    

    这给了我我正在寻找的数组:

    7-element Array{Array{Int64,1},1}:
     [3, 33, 35, 36, 37, 45, 60, 63, 67, 68, 69, 219, 263, 273, 274, 453, 454, 547, 560, 1077]
     [5, 8, 10, 11, 14, 17, 19, 21, 22, 24  …  1094, 1095, 1097, 1098, 1099, 1100, 1102, 1103, 1104, 1105]
     [6, 179, 199, 223, 344, 345, 346, 350, 353, 355, 379, 385, 388, 389, 416, 423, 430, 447, 562, 565]
     [29, 66, 133, 138, 141, 164, 171, 181, 194, 250  …  702, 883, 887, 990, 997, 998, 1015, 1055, 1056, 1074]
     [86, 103, 140, 160, 207, 251, 253, 275, 284, 298  …  958, 993, 994, 999, 1002, 1004, 1005, 1024, 1072, 1092]
     [418, 759, 802, 804, 818, 819, 830, 831, 832, 855  …  988, 989, 991, 995, 996, 1021, 1046, 1047, 1049, 1070]
     [502, 518, 806, 822, 829, 850, 912, 964]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 2021-05-09
      • 2013-08-07
      • 2020-01-02
      • 2012-08-10
      • 2021-09-07
      相关资源
      最近更新 更多