警告:这是来自朱莉娅n00b!
在朱莉娅的dbscan点坐标数组上执行之后,。(请注意,这不是作为结果结构一部分返回“赋值”的“基于距离的方法”,而是“邻接列表”方法)。这里的文件。我试图访问包含索引的向量,但当试图检索单个集群的成员时,我感到不知所措:
dbr = dbscan(pointcoordinates, .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])从数组中检索单个集群很容易:
> dbr[1]
DbscanCluster(17, [4, 12, 84, 90, 94, 675, 676, 737, 873, 965], [27, 108, 177, 880, 954, 1050, 1067])但是我如何把这些东西放到DBscanCluster里面呢?
a = dbr[1]
DbscanCluster(17, [4, 12, 84, 90, 94, 675, 676, 737, 873, 965], [27, 108, 177, 880, 954, 1050, 1067])
In [258]:
a[1]
MethodError: no method matching getindex(::DbscanCluster, ::Int64)谢谢你的帮助,如果我错过了一些引人注目的东西,很抱歉!
发布于 2020-07-23 09:57:28
是什么使你说DbscanCluster是数组的子代?
julia> DbscanCluster <: AbstractArray
false您可能在结果中被Array{DbscanCluster,1}搞糊涂了,但这只是告诉您,dbscan调用返回的对象是一个Array,其元素的类型为DbscanCluster --这并不能告诉您这些元素本身是否是Array的子类型。
至于如何获取索引,文档 for DbscanResult显示类型有三个字段:
seeds::Vector{Int}:集群起点的索引assignments::Vector{Int}:集群索引的向量,其中每个点被分配给counts::Vector{Int}:集群大小(分配点数)每一个都可以通过点表示法进行访问,例如drb[1].assignments。
如果您想得到结果中所有13个集群的计数,您可以像这样广播getproperty:
getproperty.(drb, :counts)注意,在dbscan的“邻接列表”方法中不存在计数,可以使用:
getproperty.(drb, :core_indices)https://stackoverflow.com/questions/63049824
复制相似问题