2015-09-23 26 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可以選擇公開這些信息,但默認情況下它會立即丟棄。