1

我正在做一个聚类分析,我有两个问题:

  1. 我用这两种方法发现了平方和的两个不同值:

1/ 这里建立的第一种方法:http : //www.statmethods.net/advstats/cluster.html

set.seed(180)
wss <- (nrow(mydata)-1)*sum(apply(mydata,2,var)) 

for (i in 1:8)
wss[i] <- sum(kmeans(mydata, 
     centers=i)$withinss)

wss
[1] 2244832.0 1707497.8 1514193.9 1131349.7  990028.8  698772.0  683106.4  522783.8

2/ 第二种方法

set.seed(180)    
fit <- kmeans(mydata, 5) 

fit$tot.withinss
[1] 857443.8

正如你所看到的 990 028 !=857 443 即使我使用了“set.seed”

Statmethods网站的公式有错误吗?

最后,有时 wss 会随着集群的数量而增加。没关系还是不可能?

4

2 回答 2

2

set.seed在第一个示例中使用 kmeans(data, 5) 之前,您使用了随机数生成器,但您也做了很多工作。您可能会得到不同的集群解决方案。如果您只看sum(fit$withinss)它应该匹配fit$tot.withinss给定的集群解决方案。虽然涉及到一些随机性,所以如果你想要同样的东西,你需要确保正确设置种子。

于 2013-05-13T15:21:25.967 回答
0

通过设置初始值centers,您可以有效地提供手动种子。

k-means 仅在初始生成中心时使用随机种子。

所以事实上,你提供了两种不同的初始化,因此你不应该对得到不同的结果感到惊讶。K-means 只找到局部最优值。

于 2013-05-13T21:31:31.817 回答