SOM高维数据可视化
先挖坑...后面慢慢写...
生物信息学中的算法设计,这门课最后的大作业真是绝了。
这也叫题?
本文是这个题。
讲道理虽然是看起来是一门算法课,自己实现这些算法还是过分了,主要介绍如何修改别人的代码- -
首先用到pymvpa库http://www.pymvpa.org/examples/som.html
windows下需要首先下载swig.exe
SWIG是个帮助使用C或者C++编写的软件能与其它各种高级编程语言进行嵌入联接的开发工具。SWIG能应用于各种不同类型的语言包括常用脚本编译语言例如Perl, PHP, Python, Tcl, Ruby and PHP。支持语言列表中 也包括非脚本编译语言,例如C#, Common Lisp (CLISP, Allegro CL, CFFI, UFFI), Java, Modula-3, OCAML以及R,甚至是编译器或者汇编的计划应用(Guile, MzScheme, Chicken)。SWIG普遍应用于创建高级语言解析或汇编程序环境,用户接口,作为一种用来测试C/C++或进行原型设计的工具。SWIG还能够导出 XML或Lisp s-expressions格式的解析树。SWIG可以被自由使用,发布,修改用于商业或非商业中。
下载地址:http://www.swig.org/download.html
下载后解压,放在合适的文件夹里。然后添加环境变量Path为swigwin放置的文件夹。
重启使环境变量生效
然后
pip install --user pymvpa2
pip install nibabel
示例代码:
#coding:utf-8 from mvpa2.suite import SimpleSOMMapper import pylab as pl import numpy as np colors = np.array( [[0., 0., 0.], [0., 0., 1.], [0., 0., 0.5], [0.125, 0.529, 1.0], [0.33, 0.4, 0.67], [0.6, 0.5, 1.0], [0., 1., 0.], [1., 0., 0.], [0., 1., 1.], [1., 0., 1.], [1., 1., 0.], [1., 1., 1.], [.33, .33, .33], [.5, .5, .5], [.66, .66, .66]]) color_names = ['black', 'blue', 'darkblue', 'skyblue', 'greyblue', 'lilac', 'green', 'red', 'cyan', 'violet', 'yellow', 'white', 'darkgrey', 'mediumgrey', 'lightgrey'] som = SimpleSOMMapper((20, 30), 400, learning_rate=0.05) som.train(colors) mapped = som(colors) pl.imshow(som.K, origin='lower') pl.title('Color SOM') for i, m in enumerate(mapped): pl.text(m[1], m[0], color_names[i], ha='center', va='center', bbox=dict(facecolor='white', alpha=0.5, lw=0)) pl.savefig("som.png") pl.show()