拓端tecdat|R语言中不同类型的聚类方法比较
原文链接:http://tecdat.cn/?p=6454
原文出处:拓端数据部落公众号
聚类方法用于识别从营销,生物医学和地理空间等领域收集的多变量数据集中的相似对象。它们是不同类型的聚类方法,包括:
- 划分方法
- 分层聚类
- 模糊聚类
- 基于密度的聚类
- 基于模型的聚类
数据准备
- 演示数据集:名为USArrest的内置R数据集
- 删除丢失的数据
- 缩放变量以使它们具有可比性
# 读取和准备数据my_data <- USArrests %>%na.omit() %>% # 删除缺失值scale() # 标准化变量# 查看前面3行
head(my_data, n = 3)
## Murder Assault UrbanPop Rape
## Alabama 1.2426 0.783 -0.521 -0.00342
## Alaska 0.5079 1.107 -1.212 2.48420
## Arizona 0.0716 1.479 0.999 1.04288
距离
get_dist()
:用于计算数据矩阵的行之间的距离矩阵。与标准dist()
功能相比,它支持基于相关的距离测量,包括“皮尔逊”,“肯德尔”和“斯皮尔曼”方法。fviz_dist()
:用于可视化距离矩阵
res.dist <- get_dist(Ugradient = list(low = "#00AFBB", mid = "white", high = "#FC4E07"))
划分聚类
、算法是将数据集细分为一组k个组的聚类技术,其中k是分析人员预先指定的组的数量。
k-means聚类的替代方案是K-medoids聚类或PAM(Partitioning Around Medoids,Kaufman和Rousseeuw,1990),与k-means相比,它对异常值不太敏感。
以下R代码显示如何确定最佳簇数以及如何在R中计算k-means和PAM聚类。
- 确定最佳簇数
fviz_nbclust(my_data, kmeans, method = "gap_stat")
计算并可视化k均值聚类
set.seed(123)# 可视化
viz(km.res, data = my_data,ellipse.type
# 计算 PAM
pam.res <- pam(my_data, 3)
# 可视化
viz(pam.res)
分层聚类
分层聚类是一种分区聚类的替代方法,用于识别数据集中的组。它不需要预先指定要生成的簇的数量。
# 计算层次聚类# 标准化数据hclust(method = "ward.D2") # 计算层次聚类# 可视化
# 分成4组,按组上色
viz(res.hc, k = 4, #分为四组color_labels_by_k = TRUE, # 颜色标签rect = TRUE # 在组周围添加矩形)
评估聚类倾向
为了评估聚类倾向,可以使用Hopkins的统计量和视觉方法。
- Hopkins统计:如果Hopkins统计量的值接近1(远高于0.5),那么我们可以得出结论,数据集是显着可聚类的。
- 视觉方法:视觉方法通过计算有序相异度图像中沿对角线的方形黑暗(或彩色)块的数量来检测聚类趋势。
R代码:
iris[, -5] %>% # 删除第5列(种类)scale() %>% # 标准化变量get_clust_tendency(n = 50, gradient = gradient.color)
## $hopkins_stat
## [1] 0.8
##
## $plot
确定最佳簇数
set.seed(123)# 计算
res.nbclust <- USArrests %>%scale() %>%(distance = "euclidean"
# 可视化
viz(res.nbclust
## Among all indices:
## ===================
## * 2 proposed 0 as the best number of clusters
## * 1 proposed 1 as the best number of clusters
## * 9 proposed 2 as the best number of clusters
## * 4 proposed 3 as the best number of clusters
## * 6 proposed 4 as the best number of clusters
## * 2 proposed 5 as the best number of clusters
## * 1 proposed 8 as the best number of clusters
## * 1 proposed 10 as the best number of clusters
##
## Conclusion
## =========================
## * According to the majority rule, the best number of clusters is 2 .
群集验证统计信息
在下面的R代码中,我们将计算和评估层次聚类方法的结果。
- 计算和可视化层次聚类:
# 增强的层次集群,分为3组("hclust", k = 3, graph = FALSE)# 可视化(res.hc,
检查轮廓图:
(res.hc)
## cluster size ave.sil.width
## 1 1 49 0.63
## 2 2 30 0.44
## 3 3 71 0.32
- 哪些样品有负面轮廓?他们更接近什么集群?
# 观测值的轮廓宽度
res.hc$silinfo$widths[, 1:3]# 带有负轮廓的对象
sil[neg_sil_index, , drop = FALSE]
## cluster neighbor sil_width
## 84 3 2 -0.0127
## 122 3 2 -0.0179
## 62 3 2 -0.0476
## 135 3 2 -0.0530
## 73 3 2 -0.1009
## 74 3 2 -0.1476
## 114 3 2 -0.1611
## 72 3 2 -0.2304
高级聚类方法
混合聚类方法
- 分层K均值聚类:一种改进k均值结果的混合方法
- HCPC:主成分上的分层聚类
模糊聚类
模糊聚类也称为软聚类方法。标准聚类方法(K-means,PAM),其中每个观察仅属于一个聚类。这称为硬聚类。
基于模型的聚类
在基于模型的聚类中,数据被视为来自两个或多个聚类的混合的分布。它找到了最适合模型的数据并估计了簇的数量。
DBSCAN:基于密度的聚类
DBSCAN是Ester等人引入的聚类方法。(1996)。它可以从包含噪声和异常值的数据中找出不同形状和大小的簇(Ester等,1996)。基于密度的聚类方法背后的基本思想源于人类直观的聚类方法。
R链中的DBSCAN的描述和实现
非常感谢您阅读本文,有任何问题请在下方留言!
最受欢迎的见解
1.R语言k-Shape算法股票价格时间序列聚类
2.R语言中不同类型的聚类方法比较
3.R语言对用电负荷时间序列数据进行K-medoids聚类建模和GAM回归
4.r语言鸢尾花iris数据集的层次聚类
5.Python Monte Carlo K-Means聚类实战
6.用R进行网站评论文本挖掘聚类
7.用于NLP的Python:使用Keras的多标签文本LSTM神经网络
8.R语言对MNIST数据集分析 探索手写数字分类数据
9.R语言基于Keras的小数据集深度学习图像分类
拓端tecdat|R语言中不同类型的聚类方法比较相关推荐
- R语言中不同类型的聚类方法比较
聚类方法用于识别从营销,生物医学和地理空间等领域收集的多变量数据集中的相似对象.我们围绕聚类技术进行一些咨询,帮助客户解决独特的业务问题.它们是不同类型的聚类方法,包括: 划分方法 分层聚类 模糊聚类 ...
- 拓端tecdat|R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险
最近我们被客户要求撰写关于冠心病风险的研究报告,包括一些图形和统计输出. 相关视频:R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险 逻辑回归Logistic模型原理和R语言分类预测冠 ...
- 拓端tecdat|R语言线性回归和时间序列分析北京房价影响因素可视化案例
最近我们被客户要求撰写关于北京房价影响因素的研究报告,包括一些图形和统计输出. 目的 房价有关的数据可能反映了中国近年来的变化: 人们得到更多的资源(薪水),期望有更好的房子 人口众多 独生子女政策: ...
- 拓端tecdat|R语言用LOESS(局部加权回归)季节趋势分解(STL)进行时间序列异常检测
最近我们被客户要求撰写关于LOESS(局部加权回归)的研究报告,包括一些图形和统计输出. 这篇文章描述了一种对涉及季节性和趋势成分的时间序列的中点进行建模的方法.我们将对一种叫做STL的算法进行研究, ...
- 拓端tecdat|R语言向量误差修正模型 (VECMs)分析长期利率和通胀率影响关系
最近我们被客户要求撰写关于向量误差修正模型的研究报告,包括一些图形和统计输出. 向量自回归模型估计的先决条件之一是被分析的时间序列是平稳的.但是,经济理论认为,经济变量之间在水平上存在着均衡关系,可以 ...
- R语言中读取xlsx文件的方法
R语言中读取xlsx文件的方法 安装包 install.packages("openxlsx") library(openxlsx) 文件名+sheet的序号 data<- ...
- R语言中描述统计量的多种方法
1. summary()函数可以获取描述性统计量 可以提供最小值.最大值.四分位数和数值型变量的均值,以及因子向量和逻辑型向量的频数统计 2. misc包中的describe()函数 可返回变量和观测 ...
- r语言barplot函数图中加标签_R语言中绘制条形图的简单方法
原标题:R语言中绘制条形图的简单方法 条形图(bar chart)是用宽度相同的条形的高度或长短来表示数据多少的图形.它主要用来展示不同分类(横轴)下某个数值型变量(纵轴)的取值.在实际中,条形图主要 ...
- 在r语言中使用GAM(广义相加模型)进行电力负荷时间序列分析
广义相加模型(GAM:Generalized Additive Model),它模型公式如下:有p个自变量,其中X1与y是线性关系,其他变量与y是非线性关系,我们可以对每个变量与y拟合不同关系,对X2 ...
- 拓端tecdat|bilibili视频流量数据潜望镜
最近我们被客户要求撰写关于bilibili视频流量的研究报告,包括一些图形和统计输出. 最新研究表明,中国有超过7亿人在观看在线视频内容.Bilibili,被称为哔哩哔哩或简称为B站,是中国大陆第二个 ...
最新文章
- 蓝桥杯java第四届决赛第二题--连续奇数和
- CF662C Binary Table(FWT)
- 深解微服务架构:从过去,到未来
- [2021-CVPR] Fine-grained Angular Contrastive Learning with Coarse Labels 论文简析
- Linux——安装之磁盘分区
- extern 详解(内有extern C 讲解)
- ROS下sensor_msgs::ImagePtr到sensor_msgs::Image之间的转换
- [javascript] 完全开源,开心分享 HTML5 Canvas 在线图片处理《imageMagic》(single page app)开发详解[1]...
- LINUX SHELL判断文件、目录是否存在
- 新车「智能化+安全」进入纵深区,艾拉比OTA成高频词
- edius隐藏快捷键_EDIUS 常用快捷键
- 渣男论(跟技术无关,随笔而已)——一蓑烟雨任平生
- 各省GTFP绿色全要素生产率面板数据(2004-2018年)
- Tensorflow2.0 之 SSD 网络结构
- java设计模式--01类图UML图箭头含义
- MySQL高级语句(一)---常用查询、视图、null值
- 最系统的网站优化推广大全
- 《Reasoning about Entailment with Neural Attention》阅读笔记
- C++PrimePlus第5章编程练习答案及运行结果
- mac 上压测工具_Mac OS X下压力测试技巧