Структура ELKI DBSCAN RESULT

Я не могу получить точки, которые находятся в каждом кластере, возвращаемом 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

Я прошел через это Запуск DBSCAN в ELKI!. Тем не менее я не могу обойти, чтобы увидеть точки в кластере. Я хочу сохранить его в массиве. Какова структура кластера, хранящегося в elki?? Я застрял !!


person sau    schedule 28.05.2014    source источник


Ответы (1)


Используйте cluster.getDBIDs() для получения членов кластера.

Чтобы получить необработанные данные, извлеките объекты из исходного Relation, который вы проанализировали.

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

Обратите внимание, что ELKI позволяет проводить абстрактный анализ данных. при использовании матрицы расстояний. В таких случаях у вас может не быть отношения DoubleVector, а только идентификаторы объектов. Вот почему кластер не состоит из векторов. Они состоят из коллекции DBIDs и, в некоторых случаях, из модели кластера, такой как вектор центроида.

person Erich Schubert    schedule 28.05.2014
comment
Большое спасибо Это была большая помощь !! - person sau; 28.05.2014