我使用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类,我只实现了可视化。谁能教我如何获得核心价值?
发布于 2015-09-23 20:59:19
没有“核心点价值”这样的东西。
DBSCAN不像k均值一样使用集群中心.
考虑一下这个DBSCAN图像(Wikipedia)。红色集群的“核心点值”在哪里?
星团可以是任意形状的,这样就没有“中心”。事实上,所有点的平均值可能在集群之外。
一个集群至少有一个核心点,但可能还有更多--它们都可能同时是核心点。因此,以点为核心点的信息并不是很重要。如果我没有记错,ELKI可以选择公开该信息,但默认情况下它会立即被丢弃。
https://stackoverflow.com/questions/32748968
复制相似问题