我阅读了很多在 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);
}
Run Code Online (Sandbox Code Playgroud)
我从 iris.arff 文件中读取数据并且它正在工作。现在我想将 k-means 作为参数提供给我的双精度列表。我该怎么做?
提前感谢您的回答。
问候。
如果您不想Instances通过读取 a 来创建一组DataSource,您也可以使用任何实现该接口的类Instance(例如 a )手动创建它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);
Run Code Online (Sandbox Code Playgroud)
希望有帮助。
| 归档时间: |
|
| 查看次数: |
6840 次 |
| 最近记录: |