首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单链接层次聚类-在分支高度上绘制箱形图以检测异常值

单链接层次聚类-在分支高度上绘制箱形图以检测异常值
EN

Stack Overflow用户
提问于 2020-09-07 16:35:33
回答 1查看 203关注 0票数 0

在k-means聚类进行消费者细分之前,我希望识别并删除样本中的异常值。我尝试了使用单一链接算法的层次聚类。问题是,我有一个包含800多个案例的样本,并且在我的图(单链接树状图)中,数字彼此交叉,因此无法读取,因此我不可能仅通过查看图表来清楚地识别异常值:-/

在这里,他们说,您可以基于分支距离创建箱图,以更客观的方式识别异常值。我认为这也是一个很好的方法,使我的数据集中的异常值的行号可读,但我正在努力创建箱图。https://link.springer.com/article/10.1186/s12859-017-1645-5/figures/3

有没有人知道,如何编写代码来获得基于分支高度的箱图?

这是我用来进行聚类的代码,你可以在附件中看到图

代码语言:javascript
复制
dr_dist<-dist(dr_ma_cluster[,c(148:154)])
hc_dr<-hclust(dr_dist,method = "single")      #single linkage
plot(hc_dr,labels=(row.names(dr_ma_cluster)))

这是我做boxplot的失败试验,因为我不知道如何处理分支高度

代码语言:javascript
复制
> boxplot(hc_dr)
Error in x[floor(d)] + x[ceiling(d)] : 
  non-numeric argument for binary operator
> boxplot(hc_dr[,c(148:154)])
Error in hc_dr[, c(148:154)] : Incorrect number of dimensions

这里是另一种作图的方法(以及一些自动的异常值检测方法),但它使大型数据集的可读性变得更差。绘制树的另一个代码,对于大型数据集来说可读性更差:Delete outliers automatically of a calculated agglomerative hierarchical clustering data

谢谢你的帮助!!

EN

回答 1

Stack Overflow用户

发布于 2020-09-08 03:31:19

StupidWolf建议的boxplot(hc_dr$height)就是我要找的简单的东西。

不幸的是,我没有设法用原始数据帧中的行名标记离群点。分支高度表中的行名是无用的,因为它们是按升序分配的。

hang = 0.0001给了树状图一个更好的外观,但标签仍然是不可读的,因为仍然在彼此之间。

如果任何人有类似的问题,请查看R Shiny, zoomable dendrogram program

答案中给出的代码非常容易适应,产生了可缩放的树状图,这使得识别相关案例(->outliers)变得容易。有关详细信息,请搜索csgroen提出的dendextend

boxplot和这个很好的工具一起用于在单链接聚类之后识别离群值的行名,以便在km均值聚类之前删除它们

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63774076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档