2015-09-23 3 views
0

Я использую DBSCAN для кластеризации данных, после кластеризации, для каждого кластера я хочу получить значение атрибута данных для основной точки, есть ли способ сделать это?weka DBSCAN кластеризация, как получить основную точку

private static void ClusteringDemo(String filename) throws Exception { 
    ClusterEvaluation eval; 
    Instances data; 
    DBSCAN cl; 
    data = DataSource.read(filename); 

    // manual call 
    cl = new DBSCAN(); 
    cl.setMinPoints(6); 
    cl.setEpsilon(0.05); 
    cl.buildClusterer(data); 
    eval = new ClusterEvaluation(); 
    eval.setClusterer(cl); 
    eval.evaluateClusterer(new Instances(data)); 
    System.out.println(eval.clusterResultsToString()); 

    //setup visualization 
    PlotData2D predData = ClustererPanel.setUpVisualizableInstances(data, eval); 
    VisualizePanel vp = new VisualizePanel(); 
    vp.addPlot(predData); 

    // display data 
    JFrame jf = new JFrame("Weka Clusterer Visualize: " + vp.getName()); 
    jf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
    jf.setSize(500, 400); 
    jf.getContentPane().setLayout(new BorderLayout()); 
    jf.getContentPane().add(vp, BorderLayout.CENTER); 
    jf.setVisible(true); 
} 

cl - это класс DBSCAN, и я реализую визуализацию. Кто-нибудь мог бы научить меня, как получить значение основной точки?

ответ

0

Нет такой вещи, как «значение базовой точки».

DBSCAN делает не использование кластер центры, такие как k-mean.

Consider this DBSCAN image (Wikipedia). Где будет «ключевое значение точки» красного кластера?

Кластеры могут быть произвольной формы, а затем нет «центра». Фактически среднее значение всех точек может быть вне кластера.

В кластере есть как минимум одна точка ядра, но может быть много других - все они могут быть основными точками одновременно. Таким образом, информация, которая указывает на основные моменты, не очень важна. Если я правильно помню, у ELKI есть возможность разоблачить эту информацию, но по умолчанию она немедленно отбрасывается.

Смежные вопросы