#si疾病傳播模型的原理
在經典的傳染病模型中,種群(population)內n個個體的狀態可分為如下幾類
易感狀態(susceptible)。乙個個體在感染前是處於易感狀態的,即該個體有可能被鄰居個體感染。
易感狀態i(infected)。乙個感染上某種病毒的個體就稱為是處於感染狀態。,即該個體還會以一定概率感染其鄰居個體。
移除狀態(remove,refractory或者recovered)。也成為免疫狀態或恢復狀態,當乙個個體經歷過乙個完整的感染週期後,該個體就不再被感染,因此就可以不再考慮改革提。
提取碼:z448
'''
實驗環境python2.7.13,igraph包,cairo包,numpy包
'''# -*- coding:utf8 -*
from igraph import *
import numpy as numpy
from numpy import *
import random
def len_arr(infected_array,nodes_num):#獲取感染陣列長度
len_value=0#初始化長度
len_value=nodes_num-infected_array.count(-1)#被感染數量是結點總數減去未感染節點數(未感染的結點被標記為-1)
return len_value
g=graph.read_gml("c:\python27\e1.gml")#將本地儲存的網路資料讀入變數g(生成圖)
summary(g)
nodes_num=g.vcount()#統計圖中的結點個數
net_mat=g.get_adjacency(type=get_adjacency_both)#將網路資料轉換為鄰接矩陣儲存在變數net_mat
g.vs["color"]=["white"]#給圖的頂點序列顏色賦值白色
a=[arange(nodes_num)+1]*3#宣告乙個n行3列的陣列a
nodes_state=matrix(a).t#nodes_state通過轉置a矩陣建立,用於存放每個節點的狀態資訊以及其被感染的時間(這個是理解演算法的重中之重!!!)
#第一列是節點編號,第二列是節點狀態,感染狀態用-2表示,第三列是節點感染的時間
print(nodes_state)
infected_array=[-1]*34#用於存放本輪被感染的結點, 這些結點將參與下一次感染 34代表網路節點數
print(infected_array)
infe_rate=1#傳播率(感染率) 1代表鄰接點100%被感染
set_time=2#傳播次數(感染次數) 2次
source_seed=1#感染源位置
nodes_state[0:nodes_num,2]=-1#給所有節點初始化感染時間為-1
nodes_state[source_seed-1,1]=-2#設定第乙個感染源感染狀態 -2代表感染狀態
nodes_state[source_seed-1,2]=1#設定第乙個感染源的感染時間為1
g.vs[source_seed-1]["color"]="red"#將感染的頂點顏色標紅
infected_array[0]=source_seed#將感染源的位置存入被感染節點列表
plot(g)#繪製
stop=false#感染過程結束的標記
temp_time=0#第幾次感染
temp_len=0#本輪的感染源數量初始化
while not stop:
i=0#記錄讓每個感染源都傳播一次
if len_arr(infected_array,nodes_num)>0 and len_arr(infected_array,nodes_num)<=nodes_num:#感染可以進行
temp_len=len_arr(infected_array,nodes_num)#獲取本輪的感染源數量
while i0:#存在需要被感染的節點
t=0#讓ran_infe_arr內每個感染源都被感染
while tset_time-1:#當執行感染的次數等於設定的次數結束感染
stop=true
效果圖
python實現誤差逆傳播演算法
最近學習神經網路,自己參照源 把誤差逆傳播重新寫了一遍,其實挺簡單的,關鍵是要把逆傳播的幾個過程搞清楚以及每一步是為了得到什麼,然後知道numpy的矩陣運算操作,廢話不多說,直接上 反向傳播演算法 defbackpro weights,bs,x,y,nums 逆傳播計算引數的梯度 param wei...
python實現簡單爬蟲 Python實現簡單爬蟲
簡介 爬蟲架構 1 url管理器 3 網頁分析器 4 爬蟲呼叫器 5 價值資料使用 爬蟲實現 1 排程器實現 coding utf 8 import url manager import html import html parser import html outputer import url ...
python 排序的簡單實現
獲取最小的引數 獲取第乙個引數,並且使用分片去掉第乙個,留下剩下的引數。def min1 arg res args 0 for arg in arg 1 if arg res res arg return res 讓python自動獲取第乙個引數以及其他的引數。def min2 fist,rest ...