復(fù)雜網(wǎng)絡(luò)分析庫networkx學(xué)習(xí)筆記_第1頁
復(fù)雜網(wǎng)絡(luò)分析庫networkx學(xué)習(xí)筆記_第2頁
復(fù)雜網(wǎng)絡(luò)分析庫networkx學(xué)習(xí)筆記_第3頁
復(fù)雜網(wǎng)絡(luò)分析庫networkx學(xué)習(xí)筆記_第4頁
復(fù)雜網(wǎng)絡(luò)分析庫networkx學(xué)習(xí)筆記_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

:NetworkX是一個用Python語言開發(fā)的圖論與復(fù)雜網(wǎng)絡(luò)建模工具,內(nèi)置點(diǎn)慢下面介紹我的一些使用經(jīng)驗(yàn),與大家。首先到下networkx-1.1-py2.6.egg,到pywin32-214.win32-py2.6.exe。如果要用Networkx的制圖功能,還要去下載 ,地址分別在 Python2.6版上邊四個包中,pywin32、matplotlibnumpyexe文件,按提示一需要用easyinstall安裝。具體方法:DOS(“”cmd)C:\networkx-1.1-py2.6.egg,回車后會自動執(zhí)行安裝。注意我是把 “-ActiveStateActivePython2.632- importnetworkxasnxprintnx 'C:\Python26\lib\site-packages\networkx-1.1-py2.6.egg\networkx\init.pyc'>說明Networkx(推薦《Python精要參考(第二版)》,網(wǎng)上有。這個語言很簡用它調(diào)用NetworkX了。在PythonWin的S里輸入importnetworkxasnx #導(dǎo)入NetworkX包,為了少打幾個字母,將其重命名為nxG 了兩個節(jié)點(diǎn)2、3) print #[1,2print #輸出全部的邊:[(2,print 可以循環(huán)從文件中節(jié)點(diǎn)和邊添加到G中。=nx.Graph()G=nx.DiGraph()。需要注意的是,此時再添加邊3-22-3,則被認(rèn)為是兩條不同的邊(可以試著運(yùn)行上述代碼,自Graph.to_undirected()Graph.to_directed()兩個方法。3、圖(網(wǎng)絡(luò))其中u是起點(diǎn),v是終點(diǎn),w是權(quán)重。例如:如果想權(quán)重,可以使用get_edge_data方法,它接受兩個參數(shù)和vprintG.get_edge_data(1,2) 字典結(jié)構(gòu),可以查看python語法了解它的用法。NetworkX提供了常用的圖論經(jīng)典算法,例如DFS、BFS、最短路、最法我就不一一介紹了,可以瀏覽NX,對每個算法都提供 G所有節(jié)點(diǎn)間的最短路徑printpath[0][2] 序列:[0,1,2]安裝與基本使用方法。后邊有時間會陸續(xù)介紹:用NetworkX進(jìn)行復(fù)雜本文地址: /m/user本文復(fù)雜網(wǎng)絡(luò)會議:Multi-disciplinaryapproachof [11]]一下,安裝后可能也不是在Lib\site-packages 下,我的是在scripts 下面的easy_install。[10]y文件,點(diǎn)擊setup后就是控制臺一閃就沒有了?是我的文件不對嗎?博主回復(fù):可能是,我的都是forwin版本的,一般他都會提供兩三個平臺的版本。你再試一下,而[9]]networkx做一些計(jì)算和展示,networkx有直接計(jì)算最短路徑矩博主回復(fù):用shortest_path_length(G,source=None,target=None,weighted=False)方法,返回一個二weighted=True,輸出的就是權(quán)矩陣。詳見:[8]]閆老師您好:我的系統(tǒng)是XP的安裝pywin32、matplotlib和numpy時都提示找不到表,請問這個該如360等?你自己再排查一下,正常在xp上裝是沒有問題的。[7]][6]][5]][4]easy_installsetuptools-0.6c11.win32-py2.6.exe(md5)MSWindowsinstaller[3]我是windows764位。安裝python-2.6.5.amd64后,安裝pywin32、matplotlib和numpy,提示表找不到python.C:\Python26\Lib\site-packages\easy_install.py提示C:\Python26\Lib\site-packages\easy_install.pyisnotrecognizedasaninternalorexternalcommand,operableprogramorbatch[2]]CharacterizationofComplexNetworks:ASurveyofmeasurements一文對此有全面的綜述,本文僅介紹一些常用的統(tǒng)計(jì)指標(biāo)在NetworkX中如何計(jì)算。NetworkX可以用來統(tǒng)計(jì)圖中每個節(jié)點(diǎn)的度,并生成度分布序列。下邊是一段示例代碼(S里一行一行的輸入,也可以將其保存為一個以py結(jié)尾的純文本文件后直接運(yùn)行importnetworkxasG=nx.random_graphs.barabasi_albert_graph(1000,3) print print print 然也可以用matplotlib直接作圖,在上述代碼后接著輸入:importmatplotlib.pyplotasplt #導(dǎo)入科學(xué)繪圖的matplotlib包degree=nx.degree_histogram(G) x=range(len(degree)) #生成x軸序列,從1到最大度y=[z/float(sum(degree))forzindegree] 這個在 里實(shí)現(xiàn)起來很簡單,只需要調(diào)用方nx.average_clustering(G)就可以完成平均群聚系數(shù)的計(jì)算,而調(diào)用nx.clustering(G)則可以計(jì)算各個節(jié)點(diǎn)的群聚系數(shù)。nx.diameter(G)返回圖G的直徑(最長最短路徑的長度)nx.average_shortest_path_length(G)G所有節(jié)點(diǎn)間平均最短nx.degree_assortativity(G)方法可以計(jì)算一個方面的centrality自己從里邊找:)Degreecentralitymeasures.(點(diǎn)度中心性?) Computethedegreecentralityfornodes. Computetheout-degreecentralityforcloseness_centrality(G[,v,weighted_edges]) Computeclosenesscentralityfornodes. betweennesscentralityfornodes. betweennesscentralityforedges.current_flow_closeness_centrality(G[,...]) Computecurrent-flowclosenesscentralityfornodes. current-flowbetweennesscentralityfornodes. current-flowbetweennesscentralityforedges. eigenvectorcentralityforthegraphG. centralityforthegraphG. centralityfornodes. Computeedge上邊介紹的統(tǒng)計(jì)指標(biāo)只是NetworkX能計(jì)算的指標(biāo)中的一小部分內(nèi)容,除此之外NetworkX還提供了很多(我還沒有用到過的)統(tǒng)計(jì)指標(biāo)計(jì)算方法,感興趣的朋友可以去查NetworkX的在線幫助文檔:。對于圖的統(tǒng)計(jì)指標(biāo)本文地址: /m/user本文復(fù)雜網(wǎng)絡(luò)會議:Multi-disciplinaryapproachof [3]評論人:[游客]jamieluo[2010-9-2916:44:45界的BA應(yīng)該是隨機(jī)從已存在的節(jié)點(diǎn)中選一部分出來吧,這塊改動一下就可以了應(yīng)該。[2]][1]]看一下它實(shí)現(xiàn)BA模型的源代碼,請問您知道在哪個文件里嗎?我沒有找到哎。NetworkX4種常見網(wǎng)絡(luò)的建模方法,分別是:規(guī)則圖,ER隨機(jī)圖,WS小世界網(wǎng)絡(luò)和BA無標(biāo)度網(wǎng)絡(luò)。本文首先介紹在NetworkX規(guī)則圖差不多是最沒有復(fù)雜性的一類圖了,在NetworkX中,用成了包含20個節(jié)點(diǎn)、每個節(jié)點(diǎn)有3個鄰居的規(guī)則圖:importnetworkxasimportmatplotlib.pyplotasRGnx.random_graphs.random_regular_graph(3,20)20個節(jié)點(diǎn)、每個節(jié)點(diǎn)有3個鄰居的規(guī)則圖RGpos=nx.spectral_layout(RG) nx.draw(RG,pos,with_labels=False,node_size=30)#繪制規(guī)則圖的圖形,with_labels決定節(jié)點(diǎn)是非帶(編號),node_size是節(jié)點(diǎn)的直徑plt.show()#顯示圖形圖 ER隨機(jī)圖是早期研究得比較多的一類“復(fù)雜”網(wǎng)絡(luò),這個模型的基本思想是以概率p連接NNetworkX中,可以用以概率p連接的ER隨機(jī)圖:importnetworkxasimportmatplotlib.pyplotas概率0.2連接的隨機(jī)圖pos= 圖 連邊的WS小世界網(wǎng)絡(luò),下面是一個例子:importnetworkxasimportmatplotlib.pyplotasWSnx.random_graphs.watts_strogatz_graph(20,4,0.3)20個節(jié)點(diǎn)、每個節(jié)點(diǎn)4個近鄰、隨機(jī)化重連概率為0.3的小世界網(wǎng)絡(luò)pos=nx.circular_layout(WS) nx.draw(WS,pos,with_labels=False,node_size30圖 NetworkX生成的WS小世界網(wǎng)importnetworkxasimportmatplotlib.pyplotasBAnx.random_graphs.barabasi_albert_graph(20,1)#n=20m=1pos nx.draw(BA,pos,with_labels=False,node_size30圖 NetworkX生成的BA無標(biāo)度網(wǎng)五、對BA前面我們介紹了NetworkX4種網(wǎng)絡(luò)演化模型的應(yīng)用方法,但僅代碼在random_graphs.py這個文件中,可以用記事本打開它。為了敘#定義一個方法,它有兩個參數(shù):n-網(wǎng)絡(luò)節(jié)點(diǎn)數(shù)量;m-每步演化加入的邊數(shù)defbarabasi_albert_graph(n,#生成一個包含m(BAt=0m0個節(jié)點(diǎn))#m度均為0,所以數(shù)組為空#n-mm(Python開始#while從源節(jié)點(diǎn)連接mmtargets上(targets是上#的度增加了1)將源點(diǎn)mrepeated_nodes數(shù)組中(m)#m(即度優(yōu)先連接whilesource+=1returnG1:此步是關(guān)鍵,random.choice方法是從一個數(shù)組中隨機(jī)地挑選一個元素。由于repeated_nodes數(shù)組中的節(jié)點(diǎn)出現(xiàn)次數(shù)是正比于節(jié)點(diǎn)本文地址: /m/user本文復(fù)雜網(wǎng)絡(luò)會議:Multi-disciplinaryapproachof [5][]1Networkx-字典-))zipC++java一樣也是返回值的嗎?返回的難道是一個二維數(shù)組?zip([44],[02])產(chǎn)生:【44;02】add_edges_fromG的“字典-字典-字典博主回復(fù):1A-B-C,它的數(shù)據(jù)結(jié)構(gòu)是{A:{B:{}},C:{B:{}},B:{A:{},C:{}}}(注意每個字母前后都有單引號,這回復(fù)有問題,把引號給過濾掉了,詳細(xì)說明請參見2、zip([4,4],[0,2])返回[(4,0),(4,2)],zip([1,2,3],[4,5,6])返回[(1,4),(2,5),(3,3、add_edges_from((4,0),(4,2))相當(dāng)于依次運(yùn)行:add_edge(4,0)和add_edge(4,2),它的含義是從一ct,就是哈希表)這三種基本數(shù)據(jù)結(jié)構(gòu),以及Python的函數(shù)編程思想。[4][]python語法不懂#C++defbarabasi_albert_graph(n,#m個節(jié)點(diǎn)的空圖----猜:G不是一個鄰接矩陣呢,也不是一個鏈表的數(shù)據(jù)結(jié)構(gòu),更可能是#提供一個摸用的黑箱子,開始是空的補(bǔ)注##node-0degree2,node-1degree5,node-2degree7,#repeated_nodes=[00111112222222],#這樣等概率隨機(jī)選擇時,node2#repeated_nodesn*m*2#開始有了m個節(jié)點(diǎn),分別是:012...m-1,mn-1#Python的數(shù)組編號從0開始#循環(huán)添加節(jié)點(diǎn),pythonwhileendwhile#從源節(jié)點(diǎn)連接mmtargets上(targets是上一步生成的##zip([source]*m,targets)是什么意思,[source]*m似乎是source執(zhí)行m#python#while#targets.add(x)----targets.extend(x)source+=1returnG不好轉(zhuǎn)變過來:)其實(shí)Python很簡單優(yōu)美?;卮鹉愕囊恍﹩栴}(可能我理解的也不對):1Networkx-字典-3Zip是拉鏈函數(shù),它把兩個數(shù)組的元素一對一的對應(yīng)起來組成一個二維數(shù)組(想象一下拉鏈的樣子4[source]*mmsource[3]]博主回復(fù):是的,請看我的第一篇筆記http://w [2]][1]的拼合而成的,感的朋友可以到

數(shù):即你希望繪制的網(wǎng)絡(luò)G。實(shí)際上這個方法非常復(fù)雜,它可以指定20多個關(guān)鍵字參數(shù),后邊會介紹一些常用的參數(shù),我們先從最簡單的importnetworkxas importmatplotlib.pyplotasplt G=nx.random_graphs.barabasi_albert_graph(100,1) #生成一個BA無標(biāo)度網(wǎng)絡(luò)G #繪制網(wǎng)絡(luò)G :成了一個功能豐富的窗體。窗口左下方的可以對圖像進(jìn)行放大、錄下還生成了一個png格式的文件,可以把它插入報告或中,上邊的代碼雖然簡單,但生成的圖形略顯單調(diào)。NetworkX提供了一系 `alpha`:(默認(rèn)是1.0,不透明,0為完全透明`width`:(`edge_color`:邊的顏色(默認(rèn)為黑色 邊的樣式(默認(rèn)為實(shí)現(xiàn),可選:`font_size`:節(jié)點(diǎn)字體大小(默認(rèn)為`font_color`:節(jié)點(diǎn)字體顏色(默認(rèn)為黑色靈活運(yùn)用上述參數(shù),可以繪制不同樣式的網(wǎng)絡(luò)圖形,例如:nx.draw(G,node_size=30,with_labels=False)是繪制節(jié)點(diǎn)尺寸為30、不帶的網(wǎng)絡(luò)圖。NetworkX在繪制網(wǎng)絡(luò)圖形方面提供了布局的功能,可以指定節(jié)點(diǎn)排列random_layout:節(jié)點(diǎn)隨機(jī)分布s_layout:另外,也可以單獨(dú)為圖中的每個節(jié)點(diǎn)指定一個位置(x、y坐標(biāo)比較復(fù)雜,我還沒有這樣做過。感的朋友可以看一下NetworkX文檔中的一個例子。用plt.title()方法可以為圖形添加一個標(biāo)題,該方法接受一個字符串作為事實(shí)上這些功能(包括前邊的圖形保存等功能)并不是由NetworkX提matplotlib這個包需要補(bǔ)充的一點(diǎn)是,matplotlib并不直接支持中文文本,如果想輸出中文,走正規(guī)方法還是挺麻煩的(見.aspx ml。這篇筆記簡單介紹了用NetworkX繪制復(fù)雜網(wǎng)絡(luò)圖形的方法,實(shí)際上NetworkX的制圖能力是很強(qiáng)的(matplotlib的功勞紹的功能只是其中最基礎(chǔ)的一部分,功能還有待我們一起去發(fā)掘。再次推薦上的繪圖示例代碼,能本文地址: /m/user本文復(fù)雜網(wǎng)絡(luò)會議:Multi-disciplinaryapproachof [5]]嗯,看來也了,謝謝[4]]閆老師,你好。看了你的文章獲取了很多的信息量,幫助值非常大?,F(xiàn)在我在做關(guān)鍵點(diǎn)選取的問題,[3][2]網(wǎng)絡(luò)(作者和、商品網(wǎng)絡(luò)(商品和者、城市網(wǎng)絡(luò)(線路和站點(diǎn))等都可以用二分圖來進(jìn)行描述。NetworkX提供了一些基本的:importnetworkxasnxB=nx.Graph()-- --networkx.generators.bipartite.bipartite_configuration_model(aseq,bseq,create_using=None,seed=None)--networkx.generators.bipartite.bipartite_preferential_atta create_using=None,seed=None)--networkx.generators.bipartite.bipartite_havel_hakimi_graph(aseq,bseq,根據(jù)兩個度序列建立一個Havel-Hakimi模式的二分圖(下面兩個模型類似,我沒有接觸過--networkx.generators.bipartite.bipartite_reverse_havel_hakimi_graph(aseq,bseq, 隨機(jī)圖R=nx.random_graphs.gnp_random_graph(100,0.2),由于它不是二分圖,nx.is_bipartite(R)返回的結(jié)果是False。NetworkX并沒有提供圖的二分度計(jì)算方法,如果使用到這能需要自己編制代碼。老師等編寫的《復(fù)雜系統(tǒng)與復(fù)雜網(wǎng)絡(luò)》一書的132頁有二分度的計(jì)算,感的朋友可以自己實(shí)現(xiàn)這一程序。此外,NetworkX還提供了對二分圖節(jié)點(diǎn)進(jìn)行的算法:色:printnx.bipartite_color(B){101:11021201202:0,203:0,204:0}1,參與者節(jié)點(diǎn)的顏色NetworkX集合nodes。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論