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
為你的數據集路徑。