2013-01-08 29 views
4

我正在使用weka kmeans分類器,並將其構建爲model.Now我想要聚類每個質心的中心值。 我得到它秧雞UI如何獲得weka集羣質心的值

Attribute Full Data   0   1 
       (48836) (39469)  (9367) 
============================================ 
tt   428.6238 514.1345 68.3143 

如何使用Java的秧雞罐子是我得到什麼?

我的weka集羣訓練集只有一個屬性。

要獲取屬性名稱我做: String attname = clusterCenters.get(0).attribute(0).name();

如何獲得集羣中心的價值?

回答

7

當您調用方法getClusterCentroids() in SimpleKMeans時,您會看到一個Instances對象(weka-3-6-8)。這是一組代表您的集羣中心的實例(每個指定的集羣都有一個實例)。

SimpleKMeans kmeans = ... 
// your code 
... 
Instances instances = kmeans.getClusterCentroids(); 

一旦我們有了集的實例(重心),我們可以通過numInstances()猜測其大小,通過他們使用instance(int index)double value(int attIndex)得到他們的價值觀這樣循環:

for (int i = 0; i < instances.numInstances(); i++) { 
    // for each cluster center 
    Instance inst = instances.instance(i); 
    // as you mentioned, you only had 1 attribute 
    // but you can iterate through the different attributes 
    double value = inst.value(0); 
    System.out.println("Value for centroid " + i + ": " + value); 
} 

這是所有。 我還沒有編譯代碼,但這是我做的方式。

+0

非常感謝。它的工作 – user93796

+0

我很高興你喜歡它,歡迎! – arutaku

+0

有什麼方法可以找到質心指數? – lifetime