如何在R中获得聚集聚类的热图?

时间:2020-09-06 15:25:30

标签: r cluster-analysis hierarchical-clustering

我正在尝试获取聚集聚类的热图,并且不知道如何在R中实现。但是,我确实成功完成了与此相关的事情。这是我做的代码

用于运行分层聚类的方法,凝聚方法:

# Compute with agnes 
hc_agnes <- agnes(dt_wd, method = "complete")

但是,我已经获得了热力图,但没有达到凝聚力。

    library(pheatmap)
    pheatmap(t(dt_wd[-1]), cutree_cols = 4)

这是上面代码的输出:

enter image description here

是否可以通过将hc_agnes(聚集层次聚类)传递给热图来实现相同的目的?

类似于我的数据的虚假数据在下面。

test_data <- structure(list(comorbidities = c("ast", "dia", 
"dia2", "hd", "ht", "kd", 
"ld", "lc", "ob"), chest_pain = c(4.85168018539977, 
2.51430173864274, 5.01953418482344, 6.44361833952912, 5.3312101910828, 
8.81563126252505, 9.89830508474576, 9.37901331245106, 5.23059042305904
), chills = c(25.3337195828505, 8.34716769489624, 30.2712246431255, 
27.1462205700124, 21.2420382165605, 28.2545090180361, 32.1440677966102, 
22.7697729052467, 21.1301720130172), cough = c(47.5816917728853, 
22.4245653393158, 48.4079639368896, 50.1945477075589, 46.8216560509554, 
50.2985971943888, 52.271186440678, 56.1292090837901, 45.3747094374709
), diarrhoea = c(23.8991888760139, 7.90802019068985, 21.1119459053343, 
24.0396530359356, 22.2802547770701, 22.0440881763527, 24.5762711864407, 
21.6131558339859, 23.6866573686657), fatigue = c(57.2132097334878, 
19.3494111048794, 50.3756574004508, 55.0185873605948, 50.4585987261146, 
54.1082164328657, 52.5423728813559, 53.7979639780736, 49.8760266542693
), headache = c(52.0278099652376, 16.2647223780146, 42.4492862509391, 
49.5662949194548, 46.0891719745223, 47.8957915831663, 50.8474576271186, 
45.9671104150352, 49.8062916472958), itchy_eyes = c(14.0787949015064, 
3.47728547392036, 11.419984973704, 13.7546468401487, 13.031847133758, 
12.2244488977956, 14.1949152542373, 11.6679718089272, 15.2254765225477
), joint_pain = c(6.37311703360371, 1.90689848569826, 5.3343350864012, 
6.07187112763321, 5.73248407643312, 7.21442885771543, 8.89830508474576, 
6.734534064213, 4.68774213544088), loss_appetite = c(7.4449594438007, 
3.36511497476164, 7.77610818933133, 8.42627013630731, 7.49044585987261, 
7.81563126252505, 9.11016949152542, 7.04776820673453, 7.78707577870758
), loss_smell_taste = c(28.2444959443801, 10.8244531688166, 29.3388429752066, 
29.1201982651797, 27.7197452229299, 31.062124248497, 26.0593220338983, 
25.2936570086139, 32.9226716256005), muscle_ache = c(42.6709154113557, 
14.301738642737, 38.580015026296, 45.3531598513011, 40.3057324840764, 
45.4909819639279, 47.6694915254237, 38.2145653876273, 39.7024639702464
), nasal_congestion = c(41.2804171494786, 10.7683679192372, 33.5462058602554, 
38.0421313506815, 36.3949044585987, 37.6753507014028, 34.5338983050847, 
39.389193422083, 40.8337207500387), nausea_vomiting = c(7.4449594438007, 
4.03813796971396, 6.57400450788881, 9.29368029739777, 6, 10.0200400801603, 
12.0762711864407, 8.53563038371182, 5.48582054858205), shortness_breath = c(33.9223638470452, 
7.23499719573752, 17.3553719008264, 27.1375464684015, 18.9808917197452, 
26.6533066132265, 25.8474576271186, 35.1605324980423, 18.0613668061367
), sore_throat = c(45.4519119351101, 14.0773976444195, 39.2561983471074, 
47.9553903345725, 42.7898089171975, 44.2885771543086, 48.0932203389831, 
42.1299921691464, 44.0570277390361), sputum = c(25.1158748551564, 
7.17891194615816, 18.9706987227648, 23.2961586121437, 18.2420382165605, 
22.8456913827655, 24.7881355932203, 30.7752545027408, 17.7591817759182
), temperature = c(25.7531865585168, 16.0403813796971, 35.6498873027799, 
30.9789343246592, 28.8535031847134, 36.87374749499, 34.5338983050847, 
27.0164447924824, 26.9177126917713)), row.names = c("ast", "dia", 
"dia2", "hd", "ht", "kd", 
"ld", "lc", "ob"), class = "data.frame")

使用的库:

library(cluster)
library(plotly)
library(fpc)
library(dendextend)
library(factoextra)
library(FactoMineR)
library(NbClust)

1 个答案:

答案 0 :(得分:1)

因此,当我为此苦苦挣扎时,答案很简单。库pheatmap是一个很好的工具,可用于传递聚集聚类所需的参数。

在这里:

加载库:

 library(pheatmap)

输入聚集聚类所需的参数,特别是聚类方法=“ ward”。

pheatmap(t(test_data[-1]), cluster_rows = TRUE, cluster_cols = TRUE, clustering_distance_cols = "euclidean",
         clustering_distance_rows = "euclidean", clustering_method = "ward",  cutree_cols = 4)

实际上,可视化效果很好:

[![在此处输入图片描述] [1]] [1]