溫馨提示×

java怎么實(shí)現(xiàn)kmeans聚類

小億
203
2023-09-14 02:48:40
欄目: 編程語言

Java中可以通過使用機(jī)器學(xué)習(xí)庫來實(shí)現(xiàn)k-means聚類算法。下面是一個(gè)使用Weka庫實(shí)現(xiàn)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 {
// 讀取數(shù)據(jù)集
ConverterUtils.DataSource source = new ConverterUtils.DataSource("path/to/your/dataset.arff");
Instances data = source.getDataSet();
// 設(shè)置類別屬性索引(如果數(shù)據(jù)集中有類別屬性)
data.setClassIndex(data.numAttributes() - 1);
// 初始化K-means聚類算法對象
SimpleKMeans kMeans = new SimpleKMeans();
kMeans.setNumClusters(3); // 設(shè)置聚類數(shù)目
// 構(gòu)建聚類模型
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));
}
// 對新數(shù)據(jù)進(jìn)行預(yù)測
Instance newInstance = data.get(0); // 假設(shè)預(yù)測第一條數(shù)據(jù)
int clusterIndex = kMeans.clusterInstance(newInstance);
System.out.println("Predicted cluster for instance 0: " + clusterIndex);
} catch (Exception e) {
e.printStackTrace();
}
}
}

在上面的代碼中,需要替換path/to/your/dataset.arff為你的數(shù)據(jù)集路徑。

0