📜  R 编程中的层次聚类

📅  最后修改于: 2022-05-13 01:55:09.122000             🧑  作者: Mango

R 编程中的层次聚类

R 编程语言中的层次聚类是一种无监督的非线性算法,其中创建的聚类具有层次结构(或预先确定的顺序)。例如,考虑一个多达三代的家庭。祖父和母亲的孩子成为他们孩子的父亲和母亲。因此,它们都被归为同一个家族,即它们形成一个层次结构。

R - 层次聚类

层次聚类有两种类型:

  • 凝聚层次聚类:它从单个叶子开始并成功地将集群合并在一起。它是一种自下而上的方法。
  • Divisive Hierarchical clustering:它从根开始并递归地拆分集群。这是一种自上而下的方法。

理论:

在层次聚类中,对象被分类成类似于树形结构的层次结构,用于解释层次聚类模型。算法如下:

  1. 将每个数据点放在一个单点簇中,形成N个簇。
  2. 取两个最近的数据点,使它们成为一个集群,形成N-1个集群。
  3. 取两个最近的簇,使它们成为一个簇,形成N-2 个簇。
  4. 重复步骤 3,直到只有一个集群。

树状图是一种将距离转换为高度的聚类层次结构。它将n 个单元或对象聚集成更小的组,每个单元或对象具有p个特征。同一集群中的单元由一条水平线连接。底部的叶子代表单个单元。它提供了集群的可视化表示。
拇指规则:不切割任何水平线的最大垂直距离定义了最佳聚类数。

数据集

mtcars (motor trend car road test)包括油耗、性能、32辆汽车的10个汽车设计方面。它预装了 R 中的 dplyr 包。

R
# Installing the package
install.packages("dplyr")
   
# Loading package
library(dplyr)
   
# Summary of dataset in package
head(mtcars)


R
# Finding distance matrix
distance_mat <- dist(mtcars, method = 'euclidean')
distance_mat
 
# Fitting Hierarchical clustering Model
# to 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 = 110, col = "green")
 
# Cutting tree by no. of clusters
fit <- cutree(Hierar_cl, k = 3 )
fit
 
table(fit)
rect.hclust(Hierar_cl, k = 3, border = "green")


输出:

对数据集执行层次聚类

使用hclust()在数据集上使用层次聚类算法,该算法在安装 R 时预装在 stats 包中。

R

# Finding distance matrix
distance_mat <- dist(mtcars, method = 'euclidean')
distance_mat
 
# Fitting Hierarchical clustering Model
# to 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 = 110, col = "green")
 
# Cutting tree by no. of clusters
fit <- cutree(Hierar_cl, k = 3 )
fit
 
table(fit)
rect.hclust(Hierar_cl, k = 3, border = "green")

输出:

  • 距离矩阵:

  • 这些值根据距离矩阵计算显示,方法为欧几里得。
  • 模型 Hierar_cl:

  • 在模型中,聚类方法是平均的,距离是欧式的,没有。对象为 32。
  • 绘制树状图:

  • 绘图树状图显示为 x 轴作为距离矩阵,y 轴作为高度。
  • 砍树:

  • 因此,在 k = 3 处切割树,每个类别代表其聚类数。
  • 切割后绘制树状图:

  • 该图表示切割后的树状图。绿线根据拇指规则显示集群的数量。