如何使用 Gap 统计在层次聚类中找到最佳聚类数?
How to find optimal number of clusters in hierarchical clustering using Gap statistic?
我想 运行 使用单个 linkage 进行层次聚类,以对具有 300 个特征和 1500 个观察值的文档进行聚类。我想找到这个问题的最佳簇数。
下面的 link 使用下面的代码来查找具有最大间隙的簇数。
# Compute gap statistic
set.seed(123)
iris.scaled <- scale(iris[, -5])
gap_stat <- clusGap(iris.scaled, FUN = hcut, K.max = 10, B = 50)
# Plot gap statistic
fviz_gap_stat(gap_stat)
但是在link中hcut没有明确定义。如何为 clusGap()
函数指定单个 linkage 层次聚类?
我们在 python 中是否有 clusGap()
的等价物?
谢谢
hcut()
函数是您发布的 link 中使用的 factorextra
包的一部分:
hcut package:factoextra R Documentation
Computes Hierarchical Clustering and Cut the Tree
Description:
Computes hierarchical clustering (hclust, agnes, diana) and cut
the tree into k clusters. It also accepts correlation based
distance measure methods such as "pearson", "spearman" and
"kendall".
R 还有一个内置函数,hclust()
,可用于执行层次聚类。但是,默认情况下,它不会执行单一 linkage 聚类,因此您不能简单地将 hcut
替换为 hclust
.
但是,如果您查看 clusGap()
的帮助,您会发现可以提供要应用的自定义聚类函数:
FUNcluster: a ‘function’ which accepts as first argument a (data)
matrix like ‘x’, second argument, say k, k >= 2, the number
of clusters desired, and returns a ‘list’ with a component
named (or shortened to) ‘cluster’ which is a vector of length
‘n = nrow(x)’ of integers in ‘1:k’ determining the clustering
or grouping of the ‘n’ observations.
hclust()
函数可以进行单linkage层级聚类,所以你可以:
cluster_fun <- function(x, k) list(cluster=cutree(hclust(dist(x), method="single"), k=k))
gap_stat <- clusGap(iris.scaled, FUN=cluster_fun, K.max=10, B=50)
我想 运行 使用单个 linkage 进行层次聚类,以对具有 300 个特征和 1500 个观察值的文档进行聚类。我想找到这个问题的最佳簇数。
下面的 link 使用下面的代码来查找具有最大间隙的簇数。
# Compute gap statistic
set.seed(123)
iris.scaled <- scale(iris[, -5])
gap_stat <- clusGap(iris.scaled, FUN = hcut, K.max = 10, B = 50)
# Plot gap statistic
fviz_gap_stat(gap_stat)
但是在link中hcut没有明确定义。如何为 clusGap()
函数指定单个 linkage 层次聚类?
我们在 python 中是否有 clusGap()
的等价物?
谢谢
hcut()
函数是您发布的 link 中使用的 factorextra
包的一部分:
hcut package:factoextra R Documentation
Computes Hierarchical Clustering and Cut the Tree
Description:
Computes hierarchical clustering (hclust, agnes, diana) and cut the tree into k clusters. It also accepts correlation based distance measure methods such as "pearson", "spearman" and "kendall".
R 还有一个内置函数,hclust()
,可用于执行层次聚类。但是,默认情况下,它不会执行单一 linkage 聚类,因此您不能简单地将 hcut
替换为 hclust
.
但是,如果您查看 clusGap()
的帮助,您会发现可以提供要应用的自定义聚类函数:
FUNcluster: a ‘function’ which accepts as first argument a (data) matrix like ‘x’, second argument, say k, k >= 2, the number of clusters desired, and returns a ‘list’ with a component named (or shortened to) ‘cluster’ which is a vector of length ‘n = nrow(x)’ of integers in ‘1:k’ determining the clustering or grouping of the ‘n’ observations.
hclust()
函数可以进行单linkage层级聚类,所以你可以:
cluster_fun <- function(x, k) list(cluster=cutree(hclust(dist(x), method="single"), k=k))
gap_stat <- clusGap(iris.scaled, FUN=cluster_fun, K.max=10, B=50)