在R软件中进行聚类分析,通常包括数据预处理、选择聚类方法、执行聚类以及结果评估等步骤。以下是具体方法及示例:
一、数据预处理
数据清洗 - 处理缺失值(如`NA`):`na.omit(data)`删除包含缺失值的行,或使用`na.fill()`填充。
- 移除孤立点:通过计算距离矩阵,剔除距离其他点过远的孤立样本。
特征选择与标准化
- 选择相关特征:根据业务需求或相关性分析选择输入变量。
- 标准化数据:使用`scale()`函数将数据转化为均值为0、标准差为1的分布,避免特征量纲差异影响聚类结果。
二、选择聚类方法
R提供了多种聚类算法,常用方法包括:
层次聚类(Hierarchical Clustering)
使用`hclust()`函数,通过距离矩阵构建树状图(dendrogram)。例如,对Iris数据集进行层次聚类:
```R
library(ggplot2)
iris <- read.csv("https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data")
dist_mat <- dist(iris[, 1:4])
hclust_result <- hclust(dist_mat)
ggplot(hclust_result, plot = FALSE) + geom_tree()
```
可通过`cutree()`函数将树状图转化为聚类结果:
```R
clusters <- cutree(dist_mat, k = 3)
```
K均值聚类(K-Means Clustering)
使用`kmeans()`函数,需预先指定聚类数量(如3类):
```R
kmeans_result <- kmeans(iris[, 1:4], centers = 3)
print(kmeans_result$cluster)
```
可视化聚类结果:
```R
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = as.factor(kmeans_result$cluster))) + geom_point()
```
三、评估聚类效果
内部评估指标
- 轮廓系数(Silhouette Score): 衡量样本与自身聚类的相似度及与其他聚类的差异,取值范围[-1, 1],值越大表示聚类效果越好。 ```R library(faiss) sse <- kmeans_result$sse silhouette_score <- silhouette(iris[, 1:4], kmeans_result$cluster) ``` - Davies-Bouldin Index
外部评估(需真实标签) 使用混淆矩阵、准确率等指标,将聚类结果与已知类别进行对比。
四、其他注意事项
距离度量:
欧氏距离(默认):`dist(x, method = "euclidean")`
其他距离:曼哈顿距离(`"manhattan"`)、切比雪夫距离(`"chebyshev"`)等。
聚类数量选择:
可通过肘部法则(肘部图)或轮廓系数法确定最佳聚类数。
结果可视化:
除了散点图,热图、树状图等可视化工具可辅助理解聚类结构。
通过以上步骤,可在R中完成聚类分析并评估其有效性。