1

我无法获得 elki dbscan 返回的每个集群中的点。

ArrayList<Clustering<?>> cs = ResultUtil.filterResults(result,
                Clustering.class);
        for (Clustering<?> c : cs) {
            int i = 0;
            System.out.println("clusters: " + c.getAllClusters().size());
            for (de.lmu.ifi.dbs.elki.data.Cluster<?> cluster : c
                    .getAllClusters()) {
                System.out.println("\nclusters : " + cluster.getNameAutomatic()
                        + " , IsNoise:" + cluster.isNoise() + ", Size:"
                        + cluster.size());

输出是:

clusters: 4

clusters : Cluster , IsNoise:false, Size:240

clusters : Cluster , IsNoise:false, Size:374

clusters : Cluster , IsNoise:false, Size:4901

clusters : Noise , IsNoise:true, Size:211

我已经在 ELKI 中完成了这个 Running DBSCAN!。我仍然无法四处查看集群中的点。我想将它存储在一个数组中。elki存储的cluster是什么结构??我被困住了!

4

1 回答 1

3

用于cluster.getDBIDs()获取集群成员。

Relation要获取原始数据,请从您分析的原始数据中检索对象。

for (DBIDIter iter = cluster.getIDs().iter(); iter.valid(); iter.advance()) {
    DoubleVector obj = relation.get(iter);

请注意,ELKI 允许对数据进行抽象分析——例如在使用距离矩阵时。在这种情况下,您可能没有DoubleVector关系,而只有对象 ID。这就是为什么集群不包含向量的原因。它们由一个DBIDs集合组成,在某些情况下还包括一个聚类模型,例如质心向量。

于 2014-05-28T08:40:25.377 回答