如何在R语言中绘制词聚类图?附相关数据示例
基于相关性矩阵的词聚类图绘制方案
核心思路
要实现相关性高的词聚集的聚类效果,我们可以基于词的相关性矩阵,将1 - 相关性作为距离度量(相关性越高,距离越小),再通过层次聚类算法对词进行分组,最后可视化聚类结果。
基础实现(仅树状图)
以下是用R基础包完成的代码:
# 加载数据 dat <- data.frame(word1=c(0.02, -0.1, 0.5, 0.06, -0.03, 0.8), word2=c(0.7, 0.01, 0.05, -0.23, -0.06, 0.13), word3=c(-0.52, 0.12, 0.46, 0.08, -0.01, -0.17), word4=c(0.69, 0.34, -0.11, -0.58, -0.26, 0.35), word5=c(0.04, 0.08, 0.21, -0.15, -0.04, -0.32), word6=c(0.39, 0.15, -0.21, 0.59, 0.28, 0.19)) # 计算相关性矩阵 cor_matrix <- cor(dat) # 将相关性转换为距离(1 - 相关性,确保高相关的词距离近) dist_matrix <- as.dist(1 - cor_matrix) # 层次聚类,这里用ward.D2方法(最小化组内方差) hc <- hclust(dist_matrix, method = "ward.D2") # 绘制聚类树状图 plot(hc, main = "词相关性聚类树状图", xlab = "词", ylab = "聚类距离(1-相关性)", cex = 0.8) # 调整标签大小
进阶可视化(热图+聚类树)
如果需要同时展示相关性热图和聚类结果,使用pheatmap包更直观:
# 先安装并加载pheatmap包(首次使用需安装) # install.packages("pheatmap") library(pheatmap) # 绘制热图,同时展示行(词)的聚类树 pheatmap(cor_matrix, clustering_distance_rows = as.dist(1 - cor_matrix), clustering_method = "ward.D2", main = "词相关性热图与聚类", treeheight_row = 50, # 调整行聚类树高度 cellwidth = 30, cellheight = 30) # 调整单元格大小
说明
- 聚类方法可以根据需求调整:比如
complete(最长距离法)、average(平均距离法)等,ward.D2通常能得到更紧凑的聚类组。 - 树状图中,分支越短的词,相关性越高;分支合并越早的组,整体相关性越高。
内容的提问来源于stack exchange,提问作者user21390049
相关产品推荐
相关产品推荐

