15

dplyr とほうきを使用して、データの kmeans を計算しています。私のデータには、X 座標と Y 座標のテストとトレーニングのセットが含まれており、いくつかのパラメーター値 (この場合はラムダ) によってグループ化されています。

mds.test = data.frame()
for(l in seq(0.1, 0.9, by=0.2)) {
  new.dist <- run.distance.model(x, y, lambda=l)
  mds <- preform.mds(new.dist, ndim=2)
  mds.test <- rbind(mds.test, cbind(mds$space, design[,c(1,3,4,5)], lambda=rep(l, nrow(mds$space)), data="test"))
}

> head(mds.test)
                        Comp1       Comp2 Transcripts Genes Timepoint Run lambda data
7A_0_AAGCCTAGCGAC -0.06690476 -0.25519106       68125  9324     Day 0  7A    0.1 test
7A_0_AAATGACTGGCC -0.15292848  0.04310200       28443  6746     Day 0  7A    0.1 test
7A_0_CATCTCGTTCTA -0.12529445  0.13022908       27360  6318     Day 0  7A    0.1 test
7A_0_ACCGGCACATTC -0.33015913  0.14647857       23038  5709     Day 0  7A    0.1 test
7A_0_TATGTCGGAATG -0.25826098  0.05424976       22414  5878     Day 0  7A    0.1 test
7A_0_GAAAAAGGTGAT -0.24349387  0.08071162       21907  6766     Day 0  7A    0.1 test

head上記のテスト データセットがありますが、トレーニング データの座標を含む という名前のデータセットもありますmds.train。ここでの私の最終的な目標は、ラムダでグループ化された両方のセットに対して k-means を実行し、トレーニング センターのテスト データの within.ss、 between.ss 、および total.ss を計算することですほうきに関する優れたリソースのおかげで、次のようにするだけで、テスト セットのラムダごとに kmeans を実行できます。

test.kclusts  = mds.test %>% 
  group_by(lambda) %>% 
  do(kclust=kmeans(cbind(.$Comp1, .$Comp2), centers=length(unique(design$Timepoint))))

次に、各ラムダ内の各クラスターについて、このデータの中心を計算できます。

test.clusters = test.kclusts %>% 
  group_by(lambda) %>%  
  do(tidy(.$kclust[[1]])) 

これは私が立ち往生しているところです。リファレンス ページ(例kclusts %>% group_by(k) %>% do(augment(.$kclust[[1]], points.matrix))) に同様に示されているように、機能の割り当てを計算するにはどうすればpoints.matrixよいですか? また、トレーニング セットのセンターを使用して、テストの割り当てに基づいて統計を計算する方法はありますか?mds.testlength(unique(mds.test$lambda))glance()

どんな助けでも大歓迎です!ありがとうございました!

編集:進行状況を更新しています。テスト/トレーニングの割り当てを集計する方法を理解しましたが、両方のセット (テスト センターでのトレーニングの割り当てとトレーニング センターでのテストの割り当て) から kmeans 統計を計算しようとすると、まだ問題が発生します。更新されたコードは以下のとおりです。

test.kclusts  = mds.test %>% group_by(lambda) %>% do(kclust=kmeans(cbind(.$Comp1, .$Comp2), centers=length(unique(design$Timepoint))))
test.clusters = test.kclusts %>% group_by(lambda) %>%  do(tidy(.$kclust[[1]])) 
test.clusterings = test.kclusts %>% group_by(lambda) %>% do(glance(.$kclust[[1]]))
test.assignments = left_join(test.kclusts, mds.test) %>% group_by(lambda) %>% do(augment(.$kclust[[1]], cbind(.$Comp1, .$Comp2)))

train.kclusts  = mds.train %>% group_by(lambda) %>% do(kclust=kmeans(cbind(.$Comp1, .$Comp2), centers=length(unique(design$Timepoint))))
train.clusters = train.kclusts %>% group_by(lambda) %>%  do(tidy(.$kclust[[1]])) 
train.clusterings = train.kclusts %>% group_by(lambda) %>% do(glance(.$kclust[[1]]))
train.assignments = left_join(train.kclusts, mds.train) %>% group_by(lambda) %>% do(augment(.$kclust[[1]], cbind(.$Comp1, .$Comp2)))

test.assignments$data = "test"
train.assignments$data = "train"
merge.assignments = rbind(test.assignments, train.assignments)
merge.assignments %>% filter(., data=='test') %>% group_by(lambda) ... ? 

この時点までの私の進捗状況を示す以下のプロットを添付しました。繰り返しますが、テスト割り当て/座標 (中心が見えるプロット) でトレーニング データ センターの kmeans 統計 (平方和、平方和の合計、および平方和の間) を計算したいと思います。 ここに画像の説明を入力

4

1 に答える 1