感悟:決定一個(gè)系統(tǒng)走勢是多因素構(gòu)成,而非單一因素決定
例如癌癥,醫(yī)生常說抽煙致癌,不要抽煙,但實(shí)際生活中抽煙長壽的人不少,我的姨婆九十多歲了,每日抽煙喝酒,身體也不錯(cuò)。決定癌癥的因素很多,例如遺傳,飲食,起居時(shí)間,居住環(huán)境,化工污染等等。下圖轉(zhuǎn)自一份醫(yī)學(xué)研究,說明沒有任何食物百分之百致癌或抑制癌癥。

什么人容易患癌癥?當(dāng)諸多不利因素累積,超過一定量后,患癌癥概率大。我們假設(shè)一個(gè)數(shù)據(jù)挖掘的分類器cancer,分類器由六個(gè)因素組成,當(dāng)六個(gè)因素得分總和超過3時(shí)為癌癥,得分總和小于3時(shí)為非癌癥。
1表示是,0表示否。 ? 抽煙=1分,非均衡飲食=1分,喝酒=1分,睡眠不足7小時(shí)=1分,環(huán)境污染=1分,情緒抑郁=1分;反之亦然不抽煙=0分,不喝酒=0分,睡眠充足=0分,環(huán)境無污染=0分,情緒良好=0分。張三抽煙,非均衡飲食,抽煙,喝酒,睡眠不足,環(huán)境污染,情緒良好,總分為1+1+1+1+1+0=5分,總得分大于3,分類器判斷張三患癌癥概率高。李四不抽煙,不喝酒,睡眠充足,環(huán)境無污染,情緒不好,總分為0+0+0+0+0+1=1分,總得分小于3,分類器判斷李四患癌癥概率低(例子只是假設(shè),方便大家理解分類器原理)。
根據(jù)分類器原理,我們用python來可視化細(xì)胞生死,模擬生命。從一個(gè)隨機(jī)初始化的二維方形網(wǎng)格開始,網(wǎng)格中的每一個(gè)細(xì)胞狀態(tài)可能是生或死,由其相鄰8個(gè)細(xì)胞決定。在這個(gè)規(guī)則下可以使用卷積進(jìn)行計(jì)算,我們需要scipy工具完成卷積計(jì)算。
Anaconda下展示,生成閃爍的動(dòng)態(tài)細(xì)胞圖,細(xì)胞生死會(huì)不停變化,直到停止。

程序調(diào)用了python的pygame,numpy,scipy三個(gè)模塊。Pygame用于寫游戲;numpy用于矩陣運(yùn)算;scipy是numpy的高級版本,用于更高級的自然科學(xué)應(yīng)用,例如信號處理,傅里葉分析。
此函數(shù)用于 繪制十字架。
def draw_cross(pixar):
(posx,posy)=pygame.mouse.get_pos()
pixar[posx,:]=1
pixar[:,posy]=1
此函數(shù)用于隨機(jī)初始化網(wǎng)格
def random_init(n):
return np.random.random_integers(0,1,(n,n))
所有代碼最終匯集于文章末尾。
(放大可視化的細(xì)胞集合圖,每一個(gè)細(xì)胞狀態(tài)可能是生或死,由其相鄰8個(gè)細(xì)胞決定)

代碼來自Ivan Idris物理博士的分享,經(jīng)本人測試,可以完美運(yùn)行
歡迎各位同學(xué)學(xué)習(xí)更多相關(guān)知識《python機(jī)器學(xué)習(xí)生物信息學(xué)》
