K-means算法是一种常用的无监督学习算法,用于将数据集划分为K个不同的类簇。该算法基于数据点之间的距离计算,并通过迭代优化的方式不断更新类簇的中心点位置,以实现最优的聚类结果。本文将详细介绍K-means算法的原理,并提供一个使用R语言实现K-means算法的示例代码。
K-means算法原理
-
初始化:选择K个初始的聚类中心点,可以是随机选择或根据领域知识进行选择。
-
分配数据点:对于每个数据点,计算其与K个聚类中心点之间的距离,将数据点分配给距离最近的聚类中心点所对应的类簇。
-
更新聚类中心点:计算每个类簇中所有数据点的均值,将均值作为新的聚类中心点。
-
重复步骤2和步骤3,直到聚类中心点不再发生变化或达到预定的迭代次数。
-
输出聚类结果:将数据集中的每个数据点划分到最终确定的K个类簇中。
R语言实现K-means算法
下面是一个使用R语言实现K-means算法的示例代码:
# 加载所需的包
library(cluster)
# 生成示例数据
data <- matrix(rnorm(1000), ncol = 2)
# 设置聚类数目
k <- 3
# 执行K-means算法
kmeans_result <- kmeans(data, centers = k)
# 打印聚类结果
print(kmeans_result)
# 绘制数据点及聚类中心
plot(data, col = kmeans_result$cluster, pch = 20)
points(kmeans_result$centers, col = 1:k