r - 在 R 中指定起始集群中心时出现 kmeans 错误?
问题描述
我试图在 R 中逐步运行 kmeans。当我设置 iter.max = 1 并指定起始聚类中心代替 k 时,算法似乎一直在运行,直到它收敛而不是指定的 1 次迭代。
谁能确认这是一个已知的错误?如果没有,我错过了什么?
这是我的参考代码:
# Set up data
data <- data.frame(names = c("A1", "A2", "A3", "B1", "B2", "B3", "C1", "C2"),
x = c(2, 2, 8, 5, 7, 6, 1, 4),
y = c(10, 5, 4, 8, 5, 4, 2, 9))
initial_centers <- matrix(c(2, 5, 1, 10, 8, 2), ncol=2)
# Run k means for 1 iteration
model <- kmeans(data[,-1], initial_centers, iter.max=1)
model$centers
# Actual Output:
# x y
# 1 3.666667 9.000000
# 2 7.000000 4.333333
# 3 1.500000 3.500000
# Expected Output:
# x y
# 1 2.000000 10.00000
# 2 6.000000 6.000000
# 3 1.500000 3.500000
解决方案
R 中默认的 k-means 算法比你在课堂上学到的更聪明。这是 Hartigan 和 Wong 的算法。
如果要将每个点分配给最近的预定义中心,请不要为此滥用 kmeans。相反,只需计算距离并使用argmin
.
推荐阅读
- c# - 将 Razor Pages 项目更新到 ASP.Net Core 5.0:为什么要依赖 MySQL 服务器版本?
- javascript - 两个 firebase onSnapShot() 调用,但只有 1 个在工作,即使它的代码相同
- amazon-web-services - 如何从 AWS CDK for python 中的 Bucket 对象获取存储桶名称
- javascript - 我有一个对象列表。我想在第一行显示 8 个项目。如果列表长度超过 8 则添加一个显示更多按钮
- ignite - 从 2.7.0 升级到 2.9.0 后,Ignite 客户端不稳定
- javascript - 这是否遵循策略设计模式
- ios - 提交苹果商店以供审核 info.plist 中的 DarkMode UIUserInterfaceStyle 键
- primefaces - 单击数据表时出现黑色边框
- node.js - 本地 Node.js 包中的 CLI 实用程序
- apache-kafka - 实时处理:Storm/flink vs 标准应用(java、c#...)