我正在尝试对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**
我认为这是一个数组索引对象,但不确定它是什么以及如何解决它。
出于某种原因,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)
我会非常谨慎地使用此软件包。.直到您弄清楚为什么如此。.