R编程 什么是分层聚类

R编程 什么是分层聚类

介绍

在数据分析和机器学习的广阔领域中,分层聚类是一种基于相似性将个体或对象分组的强大技术。当结合R编程语言的灵活性和效率时,它成为了在大型数据集中发现隐藏模式和结构的更加宝贵的工具。在本文中,我们将探讨分层聚类的含义,深入研究其各种类型,通过一个实际示例进行说明,并提供R语言中的代码实现。

分层聚类

分层聚类是一种无监督学习算法,旨在通过迭代地合并或划分相似的实体来创建聚类,基于预先确定的距离度量。与其他方法(如k−means聚类)不同,在这些方法中,我们需要事先定义所需聚类的数量,而分层聚类构建了一种被称为树形结构的树状图,可以在一定高度处剪切以获得多个聚类解决方案。

分层聚类的类型

在处理分层聚类时,有两种主要的方法:

  • 凝聚(自下而上): 该方法首先将每个人都视为自己的聚类,然后逐步将小的聚类合并在一起,直到形成包含所有数据点的一个大聚类。在这里,链接准则的选择起着至关重要的作用。

  • 分离(自上而下): 与凝聚方法相反;分离层次聚类从包含所有数据点的一个大聚类开始,然后递归地将它们划分为更小的子聚类,直到得到个别观测作为单独的聚类。

R编程实现分层聚类

分层聚类是通过计算曼哈顿距离进行的。

步骤

步骤1: 首先,我们需要加载示例数据集。

步骤2: 在进行聚类之前,需要进行数据预处理。如果存在的话,我们可能需要标准化变量或处理缺失值。

步骤3: 根据选定的度量标准,如欧氏距离或曼哈顿距离,计算观测之间的不相似性或距离。

步骤4: 创建分层聚类,一旦准备好距离矩阵,我们可以使用R中的”hclust()”函数执行分层聚类。

步骤5: 结果对象”hc”存储了进行后续步骤所需的所有信息。

步骤6: 绘制树状图,我们可以通过在R中绘制树状图来可视化我们的聚类。

示例

library(cluster) 

# Create a sample dataset set.seed(123) 
x <- matrix(rnorm(100), ncol = 5) 

# Finding distance matrix 
distance_mat <- dist(x, method = 'manhattan') distance_mat 

# Fitting Hierarchical Clustering Model 
# to the training dataset set.seed(240) # Setting seed 
Hierar_cl <- hclust(distance_mat, method = "average") 
Hierar_cl 

# Plotting dendrogram plot(Hierar_cl) 

# Choosing no. of clusters # Cutting tree by height abline(h = 5.5, col = "green") 

# Cutting tree by no. of clusters fit <- cutree(Hierar_cl, k = 3 ) fit  table(fit) 
rect.hclust(Hierar_cl, k = 11, border = "red")

输出

1   2        3        4        5        6        7        8 
2   2.928416                                                                
3   3.820964 4.579451                                                       
4   5.870407 3.963824 6.920070                                              
5   4.712898 3.357644 5.192501 2.041704                                     
6   3.724940 5.188503 2.298511 7.529122 6.906090                            
7   4.378470 3.603915 6.073011 6.448175 6.242628 5.408591                   
8   2.909887 2.270199 5.993941 6.134220 5.627842 5.830570 3.531025          
9   2.545686 4.500523 5.703258 5.466749 3.856739 6.130000 6.203371 4.746715 
10  5.861279 5.127758 9.368977 8.324293 8.236305 8.704556 3.295965 5.013834 
11  6.085281 3.179450 4.827798 5.101238 4.895692 5.436850 2.873268 4.584566 
12  5.590643 2.816420 6.061696 4.307201 3.803264 6.670747 4.914120 4.986817 
13  4.435100 3.563707 6.249931 6.596065 5.579229 5.771611 1.893134 3.980554 
14  6.402935 4.233552 6.619402 4.029210 2.452428 8.633337 5.044223 5.761055 
15  4.785512 2.544131 7.087874 5.618391 5.530404 7.696926 2.610109 3.284796 
16  7.566986 7.161528 6.313095 7.075204 5.756949 6.740845 5.668959 7.578376 
17  6.380095 4.860359 5.530564 7.704619 7.499072 6.327322 3.290148 5.335482 
18  6.818578 4.550758 9.130209 5.378824 5.184404 9.739261 6.419430 4.339261 
19  3.282054 2.655900 3.616115 5.178834 3.243561 4.331110 3.510374 3.815444 
20  3.236401 2.604102 5.008448 5.395216 3.577502 6.633752 5.481153 3.662209 
9   10       11       12       13       14       15       16 
2                                                                          
3                                                                          
4                                                                          
5                                                                          
6                                                                          
7                                                                          
8                                                                          
9                                                                          
10  6.099033                                                                
11  6.734916 5.530202                                                       
12  6.804009 7.368849 4.130914                                              
13  4.591857 3.200043 3.839703 4.870051                                     
14  5.335886 6.919997 4.519932 5.595756 4.300131                            
15  6.393326 3.634753 3.218255 4.662948 4.028726 4.327200                   
16  5.414681 7.171170 5.198525 8.439225 4.010792 3.776011 7.892429          
17  8.925781 6.482177 4.055843 6.170564 5.183282 6.868406 3.874253 8.586946 
18  6.552868 7.159270 5.279163 5.245416 7.472245 6.473367 3.809321 9.815098 
19  3.707689 6.167308 3.286156 3.779404 2.967265 4.302227 5.200031 4.681604 
20  3.297399 6.324931 4.913250 4.907588 4.817754 3.963564 4.663005 6.219969 
         17       18       19 
2                             
3                             
4                             
5 
6
7
8
9
10
11
12
13
14
15
16
17
18 6.804331                  
19 5.625103 6.543116         
20 7.029360 5.821915 2.451658
Call:
hclust(d = distance_mat, method = "average")

Cluster method   : average 
Distance         : manhattan
Number of objects: 20 

 [1] 1 1 2 1 1 2 1 1 1 1 1 1 1 1 1 3 2 1 1 1
fit
  1   2  3 
 16   3  1

R编程 什么是分层聚类

结论

分层聚类是一种用于发现数据集内潜在结构的多功能且强大的技术。通过利用其在实际应用中的优势,并通过R编程语言进行实现,我们现在已经获得了对分层聚类的理解和实践经验。这种方法在客户细分、图像分析和生物信息学等领域具有巨大的潜力,可以帮助专家揭示隐藏的模式,从而促进决策过程的明智决策。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程