2

我正在尝试对 R 中的 IRIS 数据进行 kmeans 聚类。我想使用 KKZ 选项进行种子选择(聚类的起点)。

如果我不标准化数据,我对 KKZ 命令没有任何问题:

library(inaparc)
res<- kkz(x=iris[,1:4], k=3) 
seed <- res$v        # this gives me the cluster seeds based on KKZ method
k1 <- kmeans(iris[,1:4], seed, iter.max=1000)

但是,当我首先缩放数据时,kkz 命令给了我错误:

library(ClusterR)
dat <- center_scale(iris[1:4], mean_center = TRUE, sd_scale = TRUE)  # scale iris data
res2 <- kkz(x=dat, k=3)
**Error in x[-x[i, ], ] : only 0's may be mixed with negative subscripts**

我认为这是一个数组索引的事情,但不确定它是什么以及如何解决它。

4

1 回答 1

1

出于某种原因,kkz 不能接受任何带有正值和负值混合的东西。我在运行它时遇到了很多问题,例如:

#ok
set.seed(1000)
kkz(matrix(rnorm(1000,5,1),100,10),3)
# not ok
kkz(matrix(rnorm(1000,0,1),100,10),3)
Error in x[-x[i, ], ] : only 0's may be mixed with negative subscripts

你真的不需要集中你的价值观,所以你可以这样做:

dat <- center_scale(iris[1:4], mean_center = FALSE, sd_scale = TRUE)
res2 <- kkz(x=dat, k=3)

我会非常谨慎地使用这个包..直到你弄清楚为什么会这样..

于 2020-03-15T20:54:42.193 回答