mac*_*ing 13 cluster-analysis data-mining weka k-means
我感觉就像一个简单的问题,但我似乎无法找到答案.我对Weka很陌生,但我觉得我已经对此做了一些研究(至少阅读了谷歌搜索结果的前几页)并且干了.
我正在使用Weka来使用Simple K-Means运行聚类.在结果列表中,我可以直观地看到我的输出("可视化集群分配"),从我对K-Means算法的理解和Weka的输出中可以清楚地看出,我的每个实例最终都是一个成员.不同的簇(以特定的质心为中心,如果你愿意的话).
我可以从文本输出中看到一些集群组合.但是,Weka没有为我提供从实例编号到集群编号的明确"映射".我想要像:
instance 1 --> cluster 0
instance 2 --> cluster 0
instance 3 --> cluster 2
instance 4 --> cluster 1
... etc.
Run Code Online (Sandbox Code Playgroud)
如何在不计算每个项目到每个质心的距离的情况下获得这些结果?
小智 14
我遇到了同样的问题并弄清楚了.如果有人需要知道,我在这里发布方法:
它实际上非常简单,你必须使用Weka的java api.
SimpleKMeans kmeans = new SimpleKMeans();
kmeans.setSeed(10);
// This is the important parameter to set
kmeans.setPreserveInstancesOrder(true);
kmeans.setNumClusters(numberOfClusters);
kmeans.buildClusterer(instances);
// This array returns the cluster number (starting with 0) for each instance
// The array has as many elements as the number of instances
int[] assignments = kmeans.getAssignments();
int i=0;
for(int clusterNum : assignments) {
System.out.printf("Instance %d -> Cluster %d", i, clusterNum);
i++;
}
Run Code Online (Sandbox Code Playgroud)
啊哈,我想我找到了我想要的东西.在群集可视化工具下,单击"保存".这将整个数据集保存为几乎与我提供的输入文件相同的ARFF文件,但具有2个新属性:第一个属性是实例的索引,而最后一个属性是群集分配.现在我只需解析它的垃圾!
| 归档时间: |
|
| 查看次数: |
19344 次 |
| 最近记录: |