在 R 中尝试复制 SPSS 中使用的 K-means 聚类方法的最佳功能/包是什么?这是我将在 SPSS 中使用的语法示例:
QUICK CLUSTER VAR1 TO VAR10
/MISSING=LISTWISE
/CRITERIA=CLUSTER(5) MXITER(50) CONVERGE(.02)
/METHOD=KMEANS(NOUPDATE)
谢谢!
在 SPSS 中,使用该/PRINT INITIAL
选项。这将为您提供初始聚类中心,这些中心在 SPSS 中似乎是固定的,但在 R 中是随机的(请参阅?kmeans
参数centers
)。
如果您使用 SPSS 输出中打印的初始聚类中心和argument="Lloyd"
kmeans 中的参数,您应该得到相同的结果(至少它对我有用,多次重复测试)。
初始聚类中心的 SPSS 输出示例:
Cluster
Cl1 Cl2 Cl3 Cl4
Var A 1 1 4 3
Var B 4 1 4 1
Var C 1 1 1 4
Var D 1 4 4 1
Var E 1 4 1 2
Var F 1 4 4 3
该表在 R 中复制为矩阵,使用 kmeans 计算:
mat <- matrix(c(1,1,4,3,4,1,4,1,1,1,1,4,1,4,4,1,1,4,1,2,1,4,4,3), nrow=4, ncol=6)
kmeans(na.omit(data.frame), centers=mat, iter.max=20, algorithm="Lloyd")
确保在 SPSS 和 R-kemans 中使用相同数量的最大迭代,并在 R-kmeans 中使用 Lloyd 方法。
但是,我不知道固定或随机选择初始中心是否更好。我个人喜欢随机选择,并使用找到的聚类组计算线性判别分析以评估分类准确性,然后重新运行 kmeans 聚类,直到我有一个令人满意的组分类。
编辑:我发现这篇文章描述了选择初始集群的 SPSS 程序。也许有人知道 R 实现?