2015-09-23 27 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可以选择公开这些信息,但默认情况下它会立即丢弃。