在Java中实现K-means算法比较常用的是使用机器学习框架WEKA的API。下面给出一个简单的示例代码:
import weka.clusterers.SimpleKMeans; import weka.core.Instances; import weka.core.converters.ConverterUtils.DataSource;
public class KMeansExample {
public static void main(String[] args) throws Exception {
// 加载用于聚类的数据集
DataSource source = new DataSource("path/to/dataset.arff");
Instances data = source.getDataSet();
// 设置聚类器参数并训练模型
SimpleKMeans kmeans = new SimpleKMeans();
kmeans.setNumClusters(3); //设置聚类数量为3
kmeans.buildClusterer(data);
// 输出聚类结果
for (int i = 0; i < data.numInstances(); i++) {
int clusterNum = kmeans.clusterInstance(data.instance(i));
System.out.println("Instance " + i + " was assigned to cluster " + clusterNum);
}
}
}
需要注意的是,上面示例代码中的数据集格式为ARFF文件格式,可以使用WEKA自带的数据集,也可以自己创建。同时,需要先添加WEKA的依赖包,才能运行上面的示例代码。
K-means算法的原理在此不再赘述,需要具体了解K-means算法可参考相关书籍或网络资料。另外,网上也有很多开源的K-means算法实现,可以直接使用或参考。