大家好,
我正在使用Iris数据集在stats包和amap包上运行kmeans。在两种情况下,我使用相同的算法(Lloyd-Forgy),相同的距离(欧几里得距离),相同数量的初始随机集合(50),相同的最大迭代次数(1000),并测试相同的k值集合(从2到15)。我还为两种情况使用相同的种子(4358)。
我不明白为什么在这些条件下,我会得到不同的wss曲线,特别是:使用stats包时的“拐点”比使用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
set.seed(4358)
运行Kmeans(amap)时,我得到相同的图形,我认为这很奇怪。 - pimset.seed(4358)
)。 - pim