Weka простые K-средства кластеризации
У меня есть то, что кажется простой проблемой, но я не могу найти ответа. Я новичок в Weka, но мне кажется, что я немного поработал над этим (по крайней мере, прочитал первые две страницы результатов Google) и придумал сухую.
Я использую 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.
Как получить эти результаты, не вычисляя расстояние от каждого элемента до каждого центроида самостоятельно?
Ответы
Ответ 1
У меня была такая же проблема, и я понял это. Я размещаю метод здесь, если кому-то нужно знать:
На самом деле это довольно просто, вы должны использовать 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++;
}
Ответ 2
Ага, я думаю, я нашел то, что искал.
Под визуализатором кластера нажмите "Сохранить". Это сохраняет весь набор данных как файл ARFF, почти идентичный файлу ввода, который я предоставил, но с двумя новыми атрибутами: первым атрибутом является индекс экземпляра, а последним атрибутом является назначение кластера. Теперь мне просто нужно разобрать дерьмо из этого!