什么是NETWORKX?
NetworkX 是一個 Python 編程語言軟件包,可用于創(chuàng)建、操作和學(xué)習(xí)復(fù)雜圖形網(wǎng)絡(luò)的結(jié)構(gòu)、動態(tài)和功能。
什么是 NETWORKX ?NetworkX 是一個進行復(fù)雜圖形網(wǎng)絡(luò)分析的 Python 軟件包。要了解 NetworkX 功能,首先需要了解圖形。圖形是一種數(shù)學(xué)結(jié)構(gòu),用于對物理、生物、社會和信息系統(tǒng)中多種類型的關(guān)系和過程進行建模。圖形由通過邊緣連接(表示這些實體之間的關(guān)系)的節(jié)點或頂點(表示系統(tǒng)實體)構(gòu)成。圖形處理是一種能夠穿梭各邊緣和節(jié)點的功能,用于發(fā)現(xiàn)和理解網(wǎng)絡(luò)中關(guān)聯(lián)數(shù)據(jù)之間的復(fù)雜關(guān)系和/或優(yōu)化路徑。圖形網(wǎng)絡(luò)分析有許多用途,例如分析社交網(wǎng)絡(luò)中的關(guān)系、網(wǎng)絡(luò)威脅檢測,以及根據(jù)共同偏好識別潛在買家。在現(xiàn)實世界中,節(jié)點可以是人員、群組、地點或事物,例如客戶、產(chǎn)品、成員、城市、商店、機場、端口、銀行帳戶、設(shè)備、手機、分子或網(wǎng)頁。節(jié)點之間的邊緣或關(guān)系示例包括友誼、網(wǎng)絡(luò)連接、超鏈接、道路、路線、電線、電話、電子郵件、“點贊”、支付、交易、電話呼叫和社交網(wǎng)絡(luò)消息。邊緣可以用一個單向箭頭來表示從一個節(jié)點到另一個節(jié)點的關(guān)系,比如,如果 Janet “點贊了” Jeanette 的一篇社交媒體文章。不過,它們也可以是無向的,比如,如果 Bob 是 Alice 的 Facebook 好友,那么 Alice 也是 Bob 的好友。NetworkX 節(jié)點可以是任何可哈希的對象,它的值保持永久改變。這些值可以是文本字符串、圖像、XML 對象、整個圖形,也可以是自定義節(jié)點。基本軟件包內(nèi)提供了多個函數(shù),可以借助這些函數(shù)以多種格式生成、讀取和編寫圖形。NetworkX 能夠處理具有 1000 多萬個節(jié)點和 1 億多個邊緣的巨大圖形。核心軟件包是符合 BSD 許可的免費軟件,其中包括表示簡單圖形、有向圖形以及采用并行邊緣和自循環(huán)的圖形等的數(shù)據(jù)結(jié)構(gòu)。NetworkX 還具有一個龐大的開發(fā)者社區(qū)。開發(fā)者會維護核心軟件包,并為第三方生態(tài)系統(tǒng)貢獻力量。NetworkX 具有以下主要用途:研究社會、生物和基礎(chǔ)設(shè)施網(wǎng)絡(luò)結(jié)構(gòu)和動態(tài)標準化圖形的編程環(huán)境快速開發(fā)協(xié)同跨學(xué)科項目與使用 C、C++ 和 FORTRAN 編寫的算法和代碼集成處理大型非標準數(shù)據(jù)集NetworkX 易于安裝和使用,尤其是對于 Python 開發(fā)者而言。為何選擇圖形分析?圖形分析可用于確定圖形中對象之間的關(guān)系強度和方向。鑒于網(wǎng)絡(luò)在我們的信息生態(tài)系統(tǒng)中發(fā)揮著日益重要的作用,因此,對關(guān)系分析工具的需求有著近乎無限的潛能。從購買決策到舉國選舉,社交網(wǎng)絡(luò)對一切事物都有著重要影響,這一影響加速了對圖形分析的使用。在發(fā)現(xiàn)由于網(wǎng)絡(luò)復(fù)雜性或節(jié)點間路徑的數(shù)量而導(dǎo)致的不明顯關(guān)系時,它發(fā)揮的作用尤為明顯。圖形分析對于實現(xiàn)以下目標作用明顯:檢測洗錢等金融犯罪識別欺詐交易及活動在社交網(wǎng)絡(luò)社區(qū)執(zhí)行網(wǎng)紅分析根據(jù)客戶評級或購買物來進行推薦分析。發(fā)現(xiàn)電網(wǎng)、水網(wǎng)和運輸網(wǎng)絡(luò)的缺點優(yōu)化航空公司、零售和制造業(yè)的路線了解影響力如何發(fā)揮作用,以便營銷人員能夠鎖定最有可能為其產(chǎn)品樹立口碑的人根據(jù)用戶之間的關(guān)系(即使用戶彼此不了解),通過映射相似興趣和共享連接,提供社交營銷內(nèi)容幫助政治運動和政治科學(xué)家更好地了解導(dǎo)致信息病毒式傳播和傳播虛假新聞的因素使得搜索引擎根據(jù)信息需求相似的人的行為偏好提供結(jié)果為何選擇 NETWORKX?NetworkX 為數(shù)據(jù)科學(xué)家和圖形數(shù)學(xué)的其他用戶提供了一種標準化的方式,供其協(xié)作、構(gòu)建、設(shè)計、分析和共享圖形網(wǎng)絡(luò)模型。作為以可擴展性和可移植性而聞名的免費軟件,NetworkX 深受 Python 愛好者喜愛。它也是廣為數(shù)據(jù)科學(xué)家喜愛的熱門圖形框架。數(shù)據(jù)科學(xué)家致力于構(gòu)建一個充滿活力的 Python 軟件包生態(tài)系統(tǒng),利用數(shù)值線性代數(shù)和繪圖等功能擴展 NetworkX。NETWORKX 對數(shù)據(jù)科學(xué)家的重要意義數(shù)據(jù)科學(xué)團隊機器學(xué)習(xí)和深度學(xué)習(xí)等大數(shù)據(jù)科學(xué)項目通常需要許多團隊成員共同協(xié)作。標準化工具和格式的使用大大簡化了信息共享。NetworkX 根植于 Python(一種熱門的數(shù)據(jù)科學(xué)語言),為 Python 庫提供圖形分析擴展,它只需為 Python 用戶提供極少量培訓(xùn),且可在多家公司及多個大洲的團隊間部署。借助 GPU 加速圖形分析GPU 具有大規(guī)模并行性,并且顯存訪問帶寬優(yōu)勢顯著,因此十分適用于加速數(shù)據(jù)密集型分析,特別是圖形分析。GPU 采用大規(guī)模并行架構(gòu),包含數(shù)千個專為同時處理多個任務(wù)而設(shè)計的小核心,非常適合執(zhí)行“為每個 X 執(zhí)行 Y”的計算任務(wù),可應(yīng)用于大型圖形中的頂點或邊緣集。借助 RAPIDS CUGRAPH 加速 NETWORKXNVIDIA RAPIDS? cuGraph 能夠提供將 RAPIDS 生態(tài)系統(tǒng)與 NetworkX 相集成的加速圖形分析庫。RAPIDS cuGraph 的愿景是使圖形分析無處不在,以便用戶只需考慮分析而無需考慮技術(shù)或框架。最新款 NVIDIA GPU 的強大計算能力提升了圖形分析速度。此外,GPU 的內(nèi)部顯存速率使 cuGraph 能夠快速切換數(shù)據(jù)結(jié)構(gòu),滿足分析需求,而不限于單一數(shù)據(jù)結(jié)構(gòu)。通過有效利用 GPU 中的大規(guī)模并行性,RAPIDS 的圖形算法(如 PageRank)和功能(如 NetworkX)能夠?qū)⒋笮蛨D形的分析速度提高 1000 多倍。用戶可以在單塊 NVIDIA A100 Tensor Core GPU 上探索多達 2 億個邊緣,并在 NVIDIA DGX? A100 集群上擴展至數(shù)十億個邊緣。NVIDIA GPU 加速的端到端數(shù)據(jù)科學(xué)RAPIDS 結(jié)合了執(zhí)行高速 ETL、圖形分析、機器學(xué)習(xí)和深度學(xué)習(xí)的能力。它是一套開源軟件庫和 API,用于完全在 GPU 上執(zhí)行數(shù)據(jù)科學(xué)流程,并且可以將訓(xùn)練時間從幾天縮短至幾分鐘。RAPIDS 依賴于 NVIDIA CUDA? 基元進行低級別計算優(yōu)化,但通過用戶友好型 Python 界面實現(xiàn) GPU 并行結(jié)構(gòu)和極高的內(nèi)存帶寬。Rapids cuGraph 無縫集成到 RAPIDS 數(shù)據(jù)科學(xué)生態(tài)系統(tǒng)中,使數(shù)據(jù)科學(xué)家能夠使用存儲在 GPU DataFrame 中的數(shù)據(jù)輕松調(diào)用圖形算法。借助 RAPIDS GPU DataFrame,數(shù)據(jù)可以通過一個類似 Pandas 的接口加載到 GPU 上,然后用于各種連接的機器學(xué)習(xí)和圖形分析算法,而無需離開 GPU。這種級別的互操作性是通過 Apache Arrow 這樣的庫實現(xiàn)的。這可加速端到端流程(從數(shù)據(jù)準備到機器學(xué)習(xí),再到深度學(xué)習(xí))。RAPIDS 和 DASK 使 cuGraph 能夠擴展為多個 GPU,支持數(shù)十億個邊緣圖形。*本文轉(zhuǎn)自 NVIDIA英偉達