使用R语言blockmodels库获取生物数据分类样本标签向量的问询
获取blockmodels模型的样本分类标签
嗨,很高兴能帮到你!你已经成功拟合出最优的6类对称泊松随机块模型(SBM_sym),要获取每个样本对应的分类标签其实很简单,直接调用模型的内置属性就能实现,具体操作如下:
步骤1:确认最优类别数对应的模型
你已经通过which.max(my_model$ICL)找到了最优类别数为6,接下来我们直接提取该类别数下的成员归属信息:
步骤2:提取标签矩阵并转换为标签向量
blockmodels中,每个类别数对应的模型结果存在my_model$memberships列表里,其中[[6]]就是6类模型的结果,里面的Z是指示矩阵——每行对应一个样本,矩阵中值为1的列就是该样本所属的类别。如果想要更直观的类别编号向量(每个元素是1-6的整数,代表样本所属类别),可以用max.col()转换:
# 你的原有代码 my_model <- BM_poisson("SBM_sym", mat) my_model$estimate() optimal_k <- which.max(my_model$ICL) # 这里已确认optimal_k=6 # 提取6类模型的成员归属指示矩阵 cluster_assignment_matrix <- my_model$memberships[[optimal_k]]$Z # 转换为简洁的类别编号向量 cluster_labels <- max.col(cluster_assignment_matrix) # 查看前几个样本的标签 head(cluster_labels)
额外验证(可选)
你可以用table(cluster_labels)查看每个类别的样本数量,确认分类结果是否符合预期:
table(cluster_labels)
这样你就得到了长度为132的标签向量,每个元素对应输入矩阵mat中一行(或一列,因为是对称SBM)的样本类别啦。
内容的提问来源于stack exchange,提问作者maa3301
相关产品推荐
相关产品推荐

