在R中使用 sparcl 包在R中执行稀疏层次聚类时,我无法获得数据的聚类标记。在帮助文档中,它们具有以下代码:
# 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()中获得类似的标签?
谢谢!
答案 0 :(得分:1)
分层聚类通常会返回树状图(即群集层次结构,底部有单个元素,顶部有完整数据集),而不是严格的分区。
如果要进行严格的分区(例如通过常规k-means生成),则必须从此层次结构中提取此类分区。有许多方法可以做到这一点,最简单的方法是使用阈值水平。
由于我不使用R(太慢),我不能在这里给你详细介绍。看看?cutree
。
答案 1 :(得分: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.perm <- HierarchicalSparseCluster.permute(data_mat,
wbounds= seq(3,7, len = 20),
nperms=5)
在结果
上运行HierarchicalSparse
hier.sparse <- HierarchicalSparseCluster(dists=hier.perm$dists,
wbound=hier.perm$bestw,
method='complete')
对上一行的hclust
值运行$u
,然后使用cutree
按照您的意愿对其进行分割
cluster = hclust(dist(hier.sparse$u))
cutree(cluster,3)