k-means weka java code

时间:2014-09-04 14:47:47

标签: java weka k-means

我在Java中阅读了许多使用此库的示例,并且可以从ARFF数据文件进行聚类并且它可以正常工作。

但是我在自己的程序中生成的双重列表中有我自己的数据,而且我不知道如何使用这种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-means我的Double of List。我该怎么办?

提前感谢您的回答。

问候。

1 个答案:

答案 0 :(得分:1)

如果您不想通过从Instances读取来创建一组DataSource,您也可以使用实现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);

希望有所帮助。