NIPT聚类项目说明
目的:使用聚类分析将NIPT分为可信的几类,然后根据该类的特征去预测以后数据的分类
- 该项目有两种文件:GC值和样本信息
- 现根据GC值先聚类,然后再剔除不合群的值,在聚类。(难点:如何去除离群值)
- 看聚类的结果加上样本信息,用决策树判断聚类的效果,看是否理想(难点:聚类的效果)
- 然后用测试集验证
聚类分析的一般步骤:
1.选择合适的变量
2.缩放数据
3.寻找异常点
4.计算距离
5.选择聚类算法
6.获得一种或多种聚类方法
7.确定聚类数目
8.获得最终的聚类解决方案
9.结果可视化
10.解读类
11.验证结果
代码和步骤:
- 数据的处理为把所有样本相应的染色体符合条件的数据整合到一起/home/ionadmin/ydn/YDN/julei_4chr.R
- 标准化,生成距离结构,类平均发生成聚类
data.scaled <- scale(data)
- 确定聚类个数
3.1画热度图
d:是dist()函数计算出的距离矩阵
dist.e=dist(julei[,3:16381],method=‘euclidean‘)
heatmap(as.matrix(dist.e),labRow = F, labCol = F)
3.2用NbClust()函数判断生成类的个数
library(NbClust)
nc <- NbClust(nutrient.scaled, distance="euclidean", min.nc=2, max.nc=15, method="average")
table(nc$Best.nc[1,])?
barplot(table(nc$Best.nc[1,]))
4.聚类
fit.average <- hclust(d, method="average")
#确定分类个数
re <- rect.hclust(julei.average, k = 2)
5.将分类列出来
re
for (i in 1:9) {
print(paste("It‘s the part",i,""))
print(julei[re[[i]],]$sample)
}
6.用决策树判断类的特征
traindata <- read.xlsx("C:\\Users\\RD001\\Desktop\\R语言的学习\\聚类分析\\0312_4.xlsx", sheetIndex = 1,encoding = ‘UTF-8‘)
myFormula <- 聚类 ~ 分类+sample+样本类型+time+采样时间+年龄+出生日期+送检医院+孕产史+孕周+体重+身高+受孕方式+B超结果+样本来源+接收时间+接收操作人+任务单号+血浆分离时间+分离操作人+血浆存放位置+DNA提取时间+DNA.血浆体积.ul.+DNA浓度.ng.ul.+DNA提取试剂盒批号+DNA.提取操作人+建库时间+Barcode+文库浓度.ng.ul.+文库构建操作人+文库试剂盒批号+文库存放位置+制备时间+模板制备操作人+OT仪器编号+ES仪器编号+测序时间+测序操作人+测序仪编号+服务器IP+有效数据量+Total_effective_reads_count+Non_zero_bin_fraction+性别
data_ctree <- ctree(myFormula, data = traindata)
table(predict(data_ctree),traindata$聚类)
plot(data_ctree)