Weka простые назначения кластеризации K-средних - PullRequest
13 голосов
/ 14 июля 2011

У меня есть то, что кажется простой проблемой, но я не могу найти ответ.Я довольно новичок в 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.

Как получить эти результаты, не вычисляя расстояние от каждого предмета до каждого центроида самостоятельно?

Ответы [ 2 ]

14 голосов
/ 29 февраля 2012

У меня была такая же проблема, и я понял это. Я публикую метод здесь, если кому-то нужно знать:

На самом деле это довольно просто, вы должны использовать Java-интерфейс Weka.

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++;
}
9 голосов
/ 14 июля 2011

Ага, я думаю, что нашел то, что искал. Под визуализатором кластера нажмите «Сохранить». Это сохраняет весь набор данных в виде файла ARFF, практически идентичного входному файлу, который я предоставил, но с двумя новыми атрибутами: первый атрибут - это индекс экземпляра, а последний атрибут - это назначение кластера. Теперь мне просто нужно разобраться с этим дерьмом!

...