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 で DBSCAN を実行しています。それでも、クラスター内のポイントを見るために移動することはできません。配列に格納したい。elki が格納するクラスタの構造は?? ハマった !!

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 に答える