2011-07-13 14 views
13

Mam coś, co wydaje się być prostym problemem, ale nie mogę znaleźć odpowiedzi. Jestem całkiem nowy dla Weka, ale mam wrażenie, że przeprowadziłem trochę badań (przynajmniej przeczytałem kilka pierwszych stron wyników Google) i wyszedłem na sucho.Weka proste zadania klastrowe K-

Używam Weka do uruchamiania klastrów przy użyciu prostych środków K-średnich. Na liście wyników nie mam problemu z wizualizacją moich danych wyjściowych ("Wizualizuj przypisania do klastra") i jasne jest, zarówno z mojego rozumienia algorytmu K-średnich, jak i wyników Weka, że ​​każda z moich instancji kończy się jako członek różne skupiska (skupione wokół określonego środka ciężkości, jeśli wolisz).

Widzę coś z kompozycji klastra z tekstu. Jednak Weka nie zapewnia mi żadnego "mapowania" od numeru instancji do numeru klastra. Chciałbym coś takiego:

instance 1 --> cluster 0 
instance 2 --> cluster 0 
instance 3 --> cluster 2 
instance 4 --> cluster 1 
... etc. 

Jak uzyskać te wyniki bez obliczania odległości od każdego przedmiotu do każdego centroida na własną rękę?

Odpowiedz

14

Miałem ten sam problem i wymyśliłem go. Zamieszczam tutaj tę metodę, jeśli ktoś musi wiedzieć:

Jest to całkiem proste, musisz użyć apletu Java aplikacji 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++; 
} 
+0

Dzięki za aktualizację! –

+0

Gdzie można znaleźć aktualne api, w którym pojawia się dokumentacja metod setPreserveInstancesOrder, getAssignments itd.? – Maoritzio

+0

hi @ amon.gammon, jak chcę wyświetlić określone atrybuty instancji? http://stackoverflow.com/questions/21014916/getting-database-attribute-from-kmeans-clustering-weka – randytan

9

Aha, myślę, że znalazłem to, czego szukałem. W wizualizatorze klastra kliknij "Zapisz". Zapisuje to cały zestaw danych jako plik ARFF prawie identyczny z podanym plikiem wejściowym, ale z 2 nowymi atrybutami: pierwszy atrybut to indeks instancji, a ostatni atrybut to przypisanie do klastra. Teraz muszę po prostu sparsować to bzdury!

+0

Jeszcze lepiej: interfejs za pomocą interfejsu API Java. –

+0

W podobny sposób, czy możemy uzyskać prawdopodobieństwa klastra w algorytmie EM weka? – Dinesh

+0

Czy istnieje metoda wiersza polecenia, aby to zrobić? – Phani