2013-05-15 43 views
0

在R中使用sparcl包在R中執行稀疏分級集羣時,我無法獲得數據的集羣標籤。在幫助文檔,它們具有以下代碼:如何獲取R中HierarchicalSparseCluster()中的集羣標籤

# Generate 2-class data 
set.seed(1) 
x <- matrix(rnorm(100*50),ncol=50) 
y <- c(rep(1,50),rep(2,50)) 
x[y==1,1:25] <- x[y==1,1:25]+2 

# Do tuning parameter selection for sparse hierarchical clustering 
perm.out <- HierarchicalSparseCluster.permute(x, wbounds=c(1.5,2:6), nperms = 5) 

# Perform sparse hierarchical clustering 
sparsehc <- HierarchicalSparseCluster(dists=perm.out$dists, 
wbound=perm.out$bestw, method="complete") 

現在,我怎麼從對象sparsehc到簇標籤是我的問題?

對於Kmeans,我們創建了一個簡單的屬性「cs」。例如。

## Choosing tuning parameters 
km.perm <- KMeansSparseCluster.permute(data_mat, K = 10, wbounds= seq(3,7, len = 
20),  nperms=5) 

## Performing kmean sparce clustring 
sparse_data_clus <- KMeansSparseCluster(data_mat, K = 10, wbounds= km.perm$bestw) 
clusterlabel <- sparse_data_clus[[1]]$Cs 

我怎樣才能HierarchicalSparseCluster()得到類似的標籤?

謝謝!

回答

1

分層聚類通常會返回一個樹狀圖(即一個簇的層次結構,底層的單個元素和頂層的完整數據集),而不是嚴格的分區。

如果你想要一個嚴格的分區(例如由常規的k-means生成),你將不得不從這個分層結構中提取這樣的分區。有很多方法可以這樣做,最簡單的方法是使用閾值級別。

由於我不使用R很多(太慢),我不能在這裏給你詳細的說明。看看?cutree

0

對此做出迴應有點遲,但我遇到了同樣的問題。下面是我工作:

set.seed(1) 
x <- matrix(rnorm(100*50),ncol=50) 
y <- c(rep(1,50),rep(2,50)) 
x[y==1,1:25] <- x[y==1,1:25]+2 
data_mat <- x 

請在矩陣的置換您對結果

hier.sparse <- HierarchicalSparseCluster(dists=hier.perm$dists, 
             wbound=hier.perm$bestw, 
             method='complete') 

運行hclust的價值$u從上一行創建

hier.perm <- HierarchicalSparseCluster.permute(data_mat, 
               wbounds= seq(3,7, len = 20), 
               nperms=5) 

運行HierarchicalSparse,然後使用cutree將其分開,如您所願

cluster = hclust(dist(hier.sparse$u))  
cutree(cluster,3)