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 に答える