R语言实现k-means算法
时间: 2023-10-06 19:07:02 浏览: 66
首先需要导入数据,然后选择聚类的数量k,接着初始化k个质心,然后对数据进行聚类,直到质心不再发生变化或达到最大迭代次数为止。下面是R语言实现k-means算法的代码:
```R
# 导入数据
data <- read.csv("data.csv", header=TRUE)
# 选择聚类的数量k
k <- 3
# 初始化k个质心
centroids <- data[sample(nrow(data), k), ]
# 最大迭代次数
max_iter <- 100
# 迭代聚类
for (i in 1:max_iter) {
# 计算每个样本到质心的距离
distances <- apply(data, 1, function(x) apply(centroids, 1, function(y) sum((x - y) ^ 2)))
# 将每个样本归类到与其距离最近的质心
clusters <- apply(distances, 1, which.min)
# 更新质心
for (j in 1:k) {
centroids[j, ] <- apply(data[clusters == j, ], 2, mean)
}
# 判断质心是否发生变化
if (all.equal(old_centroids, centroids)) break
# 保存上一次的质心
old_centroids <- centroids
}
# 输出聚类结果
print(clusters)
```
其中,data.csv是待聚类的数据集,可以根据实际情况自行替换。
阅读全文