FunnyWeb

据说这里有很多神奇的东西...

SOM高维数据可视化

2017-06-21 17:42:272540 views

先挖坑...后面慢慢写...

生物信息学中的算法设计,这门课最后的大作业真是绝了。

image.png

这也叫题?

本文是这个题。

image.png

讲道理虽然是看起来是一门算法课,自己实现这些算法还是过分了,主要介绍如何修改别人的代码- -

首先用到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()