聚类层次聚类的自动编号
number automatically of cluster hierchical clustering
我有一个与层次聚类相关的问题。
我的数据集包含 10.000 个对象。当我继续进行基于分层聚类的聚类时,我获得了最后 30 个聚类。
我使用平均值 link 来这样做。
问题是我不明白算法是如何自动确定最终的簇数的?
谢谢
不知道你用的什么软件聚类,什么数据集。无论如何,在层次聚类中,你要么决定你想要多少个聚类;或者,或者,接受错误度量或距离度量的什么值,这会为您提供聚类(当然还有聚类的数量)。
在 R 中,您可以使用内置的 cutree()
函数来执行此操作。它需要三个参数:
cutree(tree, k = NULL, h = NULL)
Arguments:
tree: a tree as produced by ‘hclust’. ‘cutree()’ only expects a
list with components ‘merge’, ‘height’, and ‘labels’, of
appropriate content each.
k: an integer scalar or vector with the desired number of groups
h: numeric scalar or vector with heights where the tree should
be cut.
换句话说,
tree
是您的聚类数据,k
是您想要的聚类数,h
是最大误差度量(转换为人类可读的比例)。通过查看绘图,您可以通过反复试验获得 h。
您指定 k 或 h。
这并不一定意味着算法总是提出对您有用的聚类。
层次聚类不决定聚类数。
无论您使用什么工具,都可以实现默认值如何将 HAC 树状图切割成分区。但这是非常具体的实现。
如何切割树状图有不同的逻辑。例如,如果您不执行最后 29 次合并,那么您将获得 30 个集群。或者你在距离阈值 x 处停止蛋白酥皮(但当然该值在很大程度上取决于数据)。或 HDBSCAN* 方法,或 ...
其实我在matlab代码中找到了答案。
在开始的评论中,他们定义了它:
DENDROGRAM(Z,P) 生成不超过 P 个叶节点的树状图,
通过折叠树的较低分支。要显示完整的树,请设置 P = 0。P 的默认值为 30。
谢谢
我有一个与层次聚类相关的问题。
我的数据集包含 10.000 个对象。当我继续进行基于分层聚类的聚类时,我获得了最后 30 个聚类。 我使用平均值 link 来这样做。 问题是我不明白算法是如何自动确定最终的簇数的?
谢谢
不知道你用的什么软件聚类,什么数据集。无论如何,在层次聚类中,你要么决定你想要多少个聚类;或者,或者,接受错误度量或距离度量的什么值,这会为您提供聚类(当然还有聚类的数量)。
在 R 中,您可以使用内置的 cutree()
函数来执行此操作。它需要三个参数:
cutree(tree, k = NULL, h = NULL)
Arguments:
tree: a tree as produced by ‘hclust’. ‘cutree()’ only expects a
list with components ‘merge’, ‘height’, and ‘labels’, of
appropriate content each.
k: an integer scalar or vector with the desired number of groups
h: numeric scalar or vector with heights where the tree should
be cut.
换句话说,
tree
是您的聚类数据,k
是您想要的聚类数,h
是最大误差度量(转换为人类可读的比例)。通过查看绘图,您可以通过反复试验获得 h。
您指定 k 或 h。
这并不一定意味着算法总是提出对您有用的聚类。
层次聚类不决定聚类数。
无论您使用什么工具,都可以实现默认值如何将 HAC 树状图切割成分区。但这是非常具体的实现。
如何切割树状图有不同的逻辑。例如,如果您不执行最后 29 次合并,那么您将获得 30 个集群。或者你在距离阈值 x 处停止蛋白酥皮(但当然该值在很大程度上取决于数据)。或 HDBSCAN* 方法,或 ...
其实我在matlab代码中找到了答案。 在开始的评论中,他们定义了它:
DENDROGRAM(Z,P) 生成不超过 P 个叶节点的树状图, 通过折叠树的较低分支。要显示完整的树,请设置 P = 0。P 的默认值为 30。
谢谢