你好计算器社区,[R k均值(统计数据)与K均值(AMAP)
我跑虹膜数据集k均值(统计包)和K均值(AMAP包)。在这两种情况下,我使用相同的算法(Lloyd-Forgy),相同的距离(euclidean),相同数量的初始随机集(50),相同的最大迭代次数(1000)的k值(从2到15)。我也在这两种情况下使用相同的种子(4358)。
我不明白为什么在这些情况下我会得到不同的wss曲线,尤其是:使用stats软件包的“elbow”比使用amap软件包时要少得多。
你能帮我理解为什么吗?非常感谢!
下面的代码:
# data load and scaling
newiris <- iris
newiris$Species <- NULL
newiris <- scale(newiris)
# using kmeans (stats)
wss1 <- (nrow(newiris)-1)*sum(apply(newiris,2,var))
for (i in 2:15) {
set.seed(4358)
wss1[i] <- sum(kmeans(newiris, centers=i, iter.max=1000, nstart=50,
algorithm="Lloyd")$withinss)
}
# using Kmeans (amap)
library(amap)
wss2 <- (nrow(newiris)-1)*sum(apply(newiris,2,var))
for (i in 2:15) {
set.seed(4358)
wss2[i] <- sum(Kmeans(newiris, centers=i, iter.max=1000, nstart=50,
method="euclidean")$withinss)
}
# plots
plot(1:15, wss1, type="b", xlab="Number of Clusters",
ylab="Within groups sum of squares", main="kmeans (stats package)")
plot(1:15, wss2, type="b", xlab="Number of Clusters",
ylab="Within groups sum of squares", main="Kmeans (amap package)")
编辑: 我通过电子邮件发送的AMAP包的作者,将发布的答复当/如果我得到任何。 https://cran.r-project.org/web/packages/amap/index.html
如果你想进一步挖掘,可以通过键入只函数名和命中输入http的 – pcantalupo
可能重复读取每个功能的源代码://stackoverflow.com/questions/5696381/r-clustering-results-are-different-everytime-i-run – pcantalupo
感谢您的意见@pcantalupo。我正在阅读代码并尝试理解它。对于可能的重复:感谢指针。我正在使用该帖子中建议的种子。我注意到的区别不在同一个函数的不同运行之间,而是在两个不同的实现(统计与地图软件包)之间。方面评论:当我运行Kmeans(amap)时,使用和不使用'set.seed(4358)'我得到的图形是相同的,我认为这很奇怪 – pim