Java中可以通过使用机器学习库来实现k-means聚类算法。下面是一个使用Weka库实现k-means聚类算法的示例代码:
import weka.clusterers.SimpleKMeans;
import weka.core.Instances;
import weka.core.converters.ConverterUtils;
public class KMeansExample {
public static void main(String[] args) {
try {
// 读取数据集
ConverterUtils.DataSource source = new ConverterUtils.DataSource("path/to/your/dataset.arff");
Instances data = source.getDataSet();
// 设置类别属性索引(如果数据集中有类别属性)
data.setClassIndex(data.numAttributes() - 1);
// 初始化K-means聚类算法对象
SimpleKMeans kMeans = new SimpleKMeans();
kMeans.setNumClusters(3); // 设置聚类数目
// 构建聚类模型
kMeans.buildClusterer(data);
// 打印聚类中心
Instances centroids = kMeans.getClusterCentroids();
for (int i = 0; i < centroids.numInstances(); i++) {
System.out.println("Cluster " + (i + 1) + " center: " + centroids.instance(i));
}
// 对新数据进行预测
Instance newInstance = data.get(0); // 假设预测第一条数据
int clusterIndex = kMeans.clusterInstance(newInstance);
System.out.println("Predicted cluster for instance 0: " + clusterIndex);
} catch (Exception e) {
e.printStackTrace();
}
}
}
在上面的代码中,需要替换path/to/your/dataset.arff
为你的数据集路径。