使用kohonen包进行SOM分析二

对大数据集而言,实现数据集的准确分类已成了一个特别重要的议题。Kohonene包作为一个优秀的用于SOM分析的包,除了提供用于可以建立SOM模型的函数外,也提供了许多将SOM分类结果进行可视化的函数。因此,本文将沿着上一篇推文的内容(kohonen包的函数、安装以及所采用的SOM分析原理)继续介绍如何使用该包实现对数据进行SOM模型建立和对新数据进行预测。
1 数据分析
1.1 som函数
上一篇推文中已经介绍了使用kohonen包进行SOM分析的三个函数,这里就简单介绍了何种数据格式可以用于kohonen包的分析。
第一,加载相应的包(Rcpp包用于欧式距离的计算)。
第二,加载wines数据,设置好随机数种子(方便重现数据),并调用som函数对标准化后的wines数据进行SOM模型的建立。
通过str函数,读者可以了解到wines的数据是二维的,为177*13的二维矩阵。对于建立好的SOM模型进行总结(summary函数),读者可以发现训练的layer层仅为1,距离的算法是平方和计算,所有样本与地图中最近的单位的平均距离为3.586。而为进一步深挖各个元素在模型中的分类结果,读者可以通过调用模型即som.wines对象的unit.classif和distances属性分为获得各个样本所归属的神经元与各个样本与其获胜单元的距离。
1.2 xyf函数
从下面的代码中我们可以看出,nir是包括四个list的数据集。其中一个数据集(training)用于指明哪些元素是用于训练SOM模型。在本段代码中,通过将nir的spectra列表和composition列表中用于训练的元素(两个数据集元素呈一一对应的关系)分别分配到X和Y两个对象中,从而进行SOM训练。
通过str函数,读者可以了解到nir的数据是四维的,分别包含95个元素。对于建立好的SOM模型进行总结(summary函数),读者可以发现训练的layer层仅为2,距离的算法是平方和计算,所有样本与地图中最近的单位的平均距离为0。与som函数一致,读者可以通过调用模型即nirnet的unit.classif和distances属性分为获得各个样本所归属的神经元与各个样本与其获胜单元的距离。
1.3 supersom函数
通过下面代码,我们发现yeast是包含七个集合的数据集,每个集合包含800个元素。而在本段代码中,所有集合都被用于训练SOM模型。
接下来,我们开始建立SOM模型。对于SOM模型的总结(summary函数)可以看出,我们的训练层为两层,计算聚类的算法是平方和(七个),tanimoto相关系数用来衡量两个集合的相关性,与地图中与地图中最近的单位的平均距离为2.196。进一步深挖各个元素在模型中的分类结果,我们可以通过unit.classif和distances进行展示。其中unit.classif展示的是各个样本所归属的簇,而distances展示的是各个样本与其获胜单元的距离。
通过str函数,读者可以了解到yeast的数据是四维的,分别包含800个元素。对于建立好的SOM模型进行总结(summary函数),读者可以发现训练的layer层仅为7个,距离的算法是平方和计算,所有样本与地图中最近的单位的平均距离为2.195。与som函数一致,读者可以通过调用模型即yeast.supersom的unit.classif和distances属性分为获得各个样本所归属的神经元与各个样本与其获胜单元的距离。
2 新数据预测
对于许多数据研究人员而言,模型的建立是为了实现对新数据的预测。对于kohonen包而言,SOM模型建立之后,人们就可以在这个模型的基础上对数据进行预测。如下面的代码所示:
预测的结果我们通过som_wines_prediction$unit.classif的数据进行展现
3 小结
结合上一篇推文,我们通过原理介绍和代码应用两个环节对SOM模型进行初步的解释。但是,SOM模型建立和新数据的预测只是论文的第一步,如何将建立的模型进行可视化则是下一篇推文中重点需要介绍的。
三 惯例小结
具体的前后两篇内容可见官方WX号。
本公众号开发的相关软件,Multi-omics Hammer软件和Multi-omics Visual软件欢迎大家使用。文末是本公众号在其他平台的账户,也欢迎大家关注并多提意见。
简书:WJ的生信小院
公众号:生信小院
博客园:生信小院
最后,也欢迎各位大佬能够在本平台上:1传播和讲解自己发表的论文;2:发表对某一科研领域的看法;3:想要达成的合作或者相应的招聘信息;4:展示自己以寻找博后工作或者博士就读的机会;5:博导提供博后工作或者博士攻读机会,都可以后台给笔者留言。希望本平台在进行生信知识分享的同时,能够成为生信分析者的交流平台,能够实现相应的利益互补和双赢(不一定能实现,但是梦想总得是有的吧)。
另外,怎么说呢,投。。。。。。币也可,不强求,但奢求


