kmeans聚类算法 Java实现
时间: 2024-05-15 21:10:42 浏览: 9
k-means 聚类算法是一种无监督的机器学习算法,它可以将具有相似特征的数据点分组为一组。该算法使用了迭代重分配数据点的方法,直到每个群集的中心点不再变化或达到指定的迭代次数为止。
在 Java 中,我们可以使用 Apache Commons Math 库来实现 k-means 聚类算法。以下是一个简单的示例代码:
```java
import org.apache.commons.math3.ml.clustering.Cluster;
import org.apache.commons.math3.ml.clustering.KMeansPlusPlusClusterer;
import org.apache.commons.math3.ml.distance.EuclideanDistance;
import org.apache.commons.math3.random.JDKRandomGenerator;
public class KMeansExample {
public static void main(String[] args) {
// 创建一个包含数据点的数组
double[][] points = {{1.0, 1.0}, {2.0, 2.0}, {1.5, 1.8}, {8.0, 8.0}, {9.0, 9.0}, {7.5, 8.5}};
// 创建一个 k-means 聚类器,指定需要聚类的组数
KMeansPlusPlusClusterer clusterer = new KMeansPlusPlusClusterer(2, 100, new EuclideanDistance(), new JDKRandomGenerator());
// 将数据点传递给聚类器并执行聚类
java.util.List<Cluster> clusters = clusterer.cluster(Arrays.asList(points));
// 打印每个群集的中心点
for (Cluster cluster : clusters) {
System.out.println("Cluster center: " + Arrays.toString(cluster.getCenter().getPoint()));
}
}
}
```
在这个示例中,我们使用了 `KMeansPlusPlusClusterer` 类来执行 k-means 聚类。我们创建了一个包含两个群集的聚类器,并将数据点传递给它进行聚类。最后,我们打印了每个群集的中心点。