R聚类分析:K均值与层次聚类
从数据标准化到聚类可视化,学习K-means和层次聚类的完整流程。 · 难度:入门 · +15XP
聚类分析概述
聚类是一种无监督学习方法,将数据划分为若干组(簇),使得同组内样本相似度高,不同组之间差异大。R中常用kmeans()进行K均值聚类,hclust()进行层次聚类。
1. K均值聚类
需要预先指定簇数量k。使用kmeans()函数,通过手肘法(SSE)确定最佳k。
data(iris)
iris_scaled <- scale(iris[,1:4])
set.seed(123)
km <- kmeans(iris_scaled, centers = 3, nstart = 25)
km$cluster # 查看聚类结果2. 层次聚类
不需要预设k,通过树状图(dendrogram)决定分割点。
d <- dist(iris_scaled, method = 'euclidean')
hc <- hclust(d, method = 'ward.D2')
plot(hc, labels = iris$Species)
# 在高度3处切割
cutree(hc, h = 3)3. 聚类评估
| 指标 | 说明 |
|---|---|
| 轮廓系数 (silhouette) | 衡量簇内紧密度与簇间分离度 |
| CH指数 | 簇间方差与簇内方差之比 |
4. 练习提示
对mtcars数据集(先标准化)进行K-means聚类,k=3,并绘制聚类后的散点图(使用前两个主成分作为坐标轴)。