2014-09-04 66 views
4

我讀了很多在Java中使用此庫的示例,並且可以從ARFF數據文件進行羣集,並且它可以工作。k-means weka java代碼

但我有我自己的數據在工作我的程序時產生的double列表中,我不知道如何使用這個k-means算法來聚集我的數據。這是一維列表。

這是我的代碼:

Instances dataa = DataSource.read("C:\\Users\\Ew\\Documents\\iris.arff"); 


    // create the model 
    kMeans = new SimpleKMeans(); 
    kMeans.setNumClusters(3); 
    kMeans.buildClusterer(dataa); 

    // print out the cluster centroids 
    Instances centroids = kMeans.getClusterCentroids(); 
    for (int i = 0; i < centroids.numInstances(); i++) { 
     System.out.println("Centroid " + i+1 + ": " + centroids.instance(i)); 
    } 

    // get cluster membership for each instance 
    for (int i = 0; i < dataa.numInstances(); i++) { 
     System.out.println(dataa.instance(i) + " is in cluster " + kMeans.clusterInstance(dataa.instance(i)) + 1); 

    } 

,我讀了iris.arff文件數據和它的工作。現在我想給參數k-意味着我的雙列表。我該怎麼做?

在此先感謝您的答案。

問候。

+1

你在k中的含義是什麼? – 2014-09-04 14:50:05

+0

如果你能告訴我如何在weka庫中使用我自己的數據,而不是arff文件 – darson1991 2014-09-04 14:57:19

回答

1

如果您不想通過讀取DataSource來創建一組Instances,也可以使用任何實現Instance接口的類(例如,一個DenseInstance。請參閱javadoc中的示例代碼:

// Create empty instance with three attribute values 
Instance inst = new DenseInstance(3); 

// Set instance's values for the attributes "length", "weight", and "position" 
inst.setValue(length, 5.3); 
inst.setValue(weight, 300); 
inst.setValue(position, "first"); 

// Set instance's dataset to be the dataset "race" 
inst.setDataset(race); 

希望有所幫助。

相關問題