Re: [问题] 群集分析图判断各群并分别存盘

楼主: JX660 (JX)   2015-11-22 12:47:07
※ 引述《sinclairJ (KEEP MOVING FORWARD)》之铭言:
: [问题类型]:
:
: 程式咨询(我想用R 做某件事情,但是我不知道要怎么用R 写出来)
:
: [软件熟悉度]:
: 请把以下不需要的部份删除
: 新手(没写过程式,R 是我的第一次)
: [问题叙述]:
: 在群集分析完成后 会得到一个图 像下面这样
: https://www.dropbox.com/s/3pylrxdjsdwouw3/hc1.png?dl=0
: 但看物件里的资讯似乎只能查到order (图中由左至右的资料顺序)
: 再来是如果资料太多 分群图也会杂在一起 要用order判断停损的分群位置也不好判断
: 试过几个其他分群的套件 似乎也都有这个问题
: 之前这部分都是用人工肉眼判断= ="但现在因为要加速分析的流程
: 希望在得到分群图后 就能顺便把同群的样本存成一个档案输出
: (我分群数的切法就是切最长的那条线 如下图 我就会把样本分成三群)
: https://www.dropbox.com/s/wqjiiwja7b3nv2g/hc2.png?dl=0
: [程式范例]:
: hc=hclust(dist(iris[,-5]))
: plot(hc)
: hc$order #names(hc)
: [1] 108 131 103 126 130 119 106 123 118 132 110 136 141 145 125 121 144 101
: 137 149 116 111 148 113 140 142 146 109 104 117...
: 感谢各位先进前辈提点
下面我用一样的资料来做
Data<- iris[,-5]
hc<- hclust(dist(Data))
决定集群数量方法有点麻烦
我自己从hclust指令本身提供的资讯
是找不出最长的那条线会落在那个集群数 (不看图的情况下)
可能要问其他板友
plot( as.dendrogram(hc), leaflab = "none" )
rect.hclust(hc,3)
上述两行是画图决定集群数
第一个指令是画去掉label的图
数量一多标码根本看不出来 直接去掉
第二个指令是标出集群位置 个人觉得蛮方便的
如果不用最长那条线去决定
我自己用过的方法是 Gap Statistic
library(clusterGenomics)
Gaps<- gap( as.matrix(Data) ,Kmax=5)
在clusterGenomics这个package里面可以找到现成的指令
取Gap的建议值 决定集群数
N<- Gaps$hatK
Data$Cluster<- factor( cutree(hc,N) )
List<- split( Data, Data$Cluster )
在这里 Gap的建议值是3 与看图是相同的
接着用cutree这个指令去列出各观察质属于哪个集群
并将结果存成其中一个factor变量
再用split指令 处理成一个包含不同集群资料集的list
最后用循环存成多个资料集
for ( i in 1 : N ){
write.csv(
List[[i]] ,
file =
paste("Dataset_",names(List)[i],".csv",sep="") )
}
结果如下
dir()
[1] "Dataset_1.csv" "Dataset_2.csv" "Dataset_3.csv"
原po 参考看看
作者: allen1985 (我要低调 拯救形象)   2015-11-22 12:52:00
推又学到新东西 gap!
作者: sinclairJ (KEEP MOVING FORWARD)   2015-12-01 02:50:00
谢谢指导~~获益良多~

Links booklink

Contact Us: admin [ a t ] ucptt.com