免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

教你制作一張編程語言的關系網絡圖(一)_

2023-12-07    分類: 網站建設

編譯:周家宇、丁慧、葉一、小宇、錢天培

今天, 將教你如何制作編程語言的網絡圖。如果你不知道什么是關系網絡圖,你可以點擊下面的鏈接來看看最終的結果:

#,

我們可以在這里看到從過去到現在的 250 多種編程語言之間“設計影響力”的關系。下面是演示的屏幕截圖:

接下來,就讓我們一起來學習制作這張關系網絡圖吧!

在當今高度連接的世界中,互聯網在現代生活中無處不在。比如消化菌的周末就是這樣開始的——通過北京的交通網絡進入城市,然后去你最喜歡的咖啡店的分店,將你的筆記本電腦連接到他們的Wi-Fi。接下來,登錄各種常用的社交網站。

眾所周知,過去幾十年中一些最有影響力的公司之所以成功,是因為互聯網的力量。

、、等一些社交媒體平臺都依賴社交網絡的小世界特性。這使他們能夠有效地將用戶彼此(和廣告商)聯系起來。

谷歌目前的成功主要是由于他們早期在搜索引擎市場的主導地位——部分是因為他們能夠通過他們的 page Rank 網絡算法返回相關結果。

亞馬遜高效的配送網絡使他們能夠在一些主要城市提供當日送達服務。

網絡算法在人工智能和機器學習等領域也非常重要。神經網絡領域的研究非?;鸨?。計算機視覺中許多不可或缺的特征檢測算法在很大程度上也依賴于使用網絡對圖像的不同部分進行建模。

網絡模型還可以解釋大量科學現象,包括量子力學、生化途徑以及生態和社會經濟系統。

那么,鑒于它們不可否認的重要性,我們應該如何更好地理解網絡及其屬性?

網絡的數學研究被稱為“圖論”,它是數學中比較容易的分支之一。本文將介紹簡單的網絡知識,即使你沒有相關背景知識,也能輕松學會。

此外,我們將使用3.x 和一個很棒的開源軟件,通過關系網絡連接一系列編程語言的過去和現在的網絡可視化。

首先,什么是網絡?

其實,上面引用的栗子已經給出了一些線索。交通網絡由目的地和路徑的連接組成。社交網絡通過個人和個人之間的關系進行連接。搜索引擎算法通過查看哪些頁面鏈接到其他頁面來評估不同網頁的“順序”。

更一般地說,網絡是任何可以用節點和邊來描述的系統,或者通俗地說,我們稱之為“點和線”。

邊緣連接節點示例(語言)(網絡表示編程語言之間的關系)

有些系統更容易通過這種方式建立網絡。社交網絡可能是最明顯的例子。計算機文件系統是另一種方式——文件夾和文件通過它們的“父”和“子”關系創建連接。

然而,網絡的真正威力在于可以從網絡的角度對許多系統進行建模,即使一開始并不明顯。

代表網絡

我們應該如何將點和線的圖片轉換為我們可以壓縮的數字信號?

解決方案之一是繪制一個鄰接矩陣來表示我們的網絡。

如果您不熟悉矩陣的概念,這聽起來可能很嚇人,但不要害怕。將它們視為可以同時執行多項計算的數字網格。這是一個簡單的例子:

在這個矩陣中,每行和每列的交集是 0 還是 1,這取決于每種語言是否有鏈接。您也可以從上圖觀察!

對于大多數要解決的問題,矩陣是一種很好的數學表示網絡的方法。但是,從計算的角度來看,它有時可能有點麻煩。

例如,即使節點的數量相對較少(比如 1000),矩陣中的元素數量也會大得多(例如,1000^2 = 1,000,000)。

許多現實世界的系統產生稀疏網絡,其中大多數節點只能連接到所有其他節點的一小部分。

如果我們將計算機內存中 1000 個節點的稀疏網絡表示為鄰接矩陣,那么我們將在 RAM 中存儲 1,000,000 字節的數據。大多數將為零。這里有一個更有效的方法來解決這個問題。

該方法使用邊列表而不是鄰接矩陣。這些正是他們所說的,它們只是相互鏈接的節點對列表。

另一種表示網絡的方法是鄰接表,它列出了在每個節點后面鏈接到它的節點。例如:

收集數據并建立連接

任何網絡模型和可視化的性能取決于用于構建網絡本身的數據質量。除了保證數據準確完整之外,我們還需要一種合理的方式來推斷節點之間的邊。

這是非常關鍵的一步,任何后續的網絡分析和推理都取決于“相關標準”的合理性。

例如,在社交網絡分析中,您可能會根據人們是否在社交媒體上相互聯系來建立人與人之間的聯系。在分子生物學中,您可能會根據基因的共表達建立聯系。

通常,我們還可以為邊分配權重以反映關系的“強度”。

例如,在在線零售的情況下,可以根據同時購買產品的頻率來計算重量。使用高權重邊連接經常同時購買的產品,使用低權重邊連接偶爾同時購買的產品。與偶爾同時購買的產品相比,非同時購買的產品根本不會聯網。

正如您所想的那樣,將節點相互連接的方法可能很復雜。

但是對于本教程,我們將使用一種更簡單的方式來連接編程語言。我們必須依靠維基百科。

維基百科的成功證明了它的可靠性。文章寫作的開源合作方式也應該保證一定的客觀性。

而且,它的頁面結構相對一致,是一個很方便的嘗試網頁抓取技術的地方。

另一個方便的工具是廣泛且有據可查的維基百科 ApI,它使信息檢索更容易。接下來我們一起開始吧。

第一步:安裝

它可以安裝在 Mac、Mac 和.

對于這個項目,我使用了。如果您使用 /,那么您可以按照以下步驟啟動并運行它。如果沒有,那么安裝過程不會太糟糕。

將最新版本下載到您的系統(在撰寫本文時 v.0.9.1)。準備就緒后,您需要解壓縮文件。

您可能需要檢查您的 Java JRE 版本。需要最新版本。在我剛剛安裝的那個上,我只安裝了-jre,下面的所有內容都會在此基礎上構建。

在您準備好安裝之前,還有一個步驟。為了將圖表導出到網絡,您可以使用 .js 插件。

從菜單欄中選擇“工具”選項,然后選擇“插件”。

單擊“可用插件”選項卡并選擇“”(我還安裝了 JSON 導出器,因為它是另一個有用的插件)。

單擊“安裝”按鈕,您將完成整個安裝過程。安裝結束后,需要重新啟動。

第二步:編寫腳本

本教程將使用 3.x 和一些模塊來簡化它。要使用 pip 模塊安裝程序,您需要運行以下命令:

現在,在一個新目錄中,創建一個名為 .py 的文件并在您喜歡的代碼編輯器/IDE 中打開它。以下是主要邏輯的概述:

首先,您需要有一個編程語言列表。

接下來,瀏覽列表并檢索相關維基百科文章的 HTML。

提取受每種語言影響的編程語言列表。這是我們連接節點的粗略標準。

同時,我們可以獲取有關每種語言的一些元數據。

最后,將所有收集到的數據寫入 .csv 文件。

完整的腳本在這里:

()。

導入模塊

在 .py 中,首先導入一些模塊。

當您準備好時,通過創建節點列表開始。這是模塊派上用場的地方。它使訪問維基百科 ApI 變得非常容易。

添加以下代碼:

保存并運行上述腳本,您將看到打印出的“列表”維基百科文章中的所有鏈接。

此外,您需要手動檢查自動收集的數據??焖贋g覽后,我們可以發現除了許多實際的編程語言外,腳本還提供了一些額外的鏈接。

例如,您可能會看到“List of”、“of”等。

雖然可以刪除不想包含的節點,但為了節省時間,還是先進行一輪數據清洗吧。

這些代碼定義了要從數據中刪除的子字符串列表。運行腳本時,遍歷數據并刪除所有包含不需要的子字符串的元素。

在語言中,只需要一行代碼就可以做到這一點!

其他輔助功能

現在我們可以開始抓取數據并構建邊緣列表(并收集所有元數據)。為了方便起見,讓我們先定義一些函數。

抓取 HTML

第一個函數使用該模塊獲取每種語言的頁面 HTML。

該函數使用. 獲取“”+“編程語言”頁面的HTML的模塊。

然后傳遞給它,它會讀取 HTML 并將其解析為可用于搜索信息的對象。

接下來,使用 () 方法抓取感興趣的 HTML 元素。

下面是每篇編程語言文章頂部的匯總表。如何識別?

最簡單的方法是訪問其中一個編程語言頁面。在這里,您可以簡單地使用瀏覽器的開發工具來檢查感興趣的元素。匯總表具有 HTML 標記和 CSS 類 "" 和 "",因此這些可用于標識 HTML 中的表。

用參數指定它:

() 返回滿足條件的所有元素的列表。為了指定感興趣的元素,需要添加索引 [0]。如果函數執行成功,則返回對象,否則返回 None。

在自動數據收集程序的情況下,全面的異常處理非常重要。如果沒有,那么在最好的情況下,如果腳本崩潰,數據捕獲程序需要重新啟動。

在最壞的情況下,你得到的數據集會包含不一致和錯誤,這會給你后續的工作埋下隱患。

檢索元數據

下一個函數使用對象來查找一些元數據。下表給出了搜索語言首次出現在該表中的年份代碼。

這個簡短的函數將一個對象作為參數,并調用 () 函數生成一個字符串。

下一步是創建一個名為 year 的子字符串。該字符串在單詞“”第一次出現后存儲 30 個字符。該字符串應包含該語言第一次出現的年份。

為了僅提取年份,請使用正則表達式(通過 re 模塊)匹配以 1 到 3 之間的數字開頭且緊接三個數字的任何字符串。

如果執行成功,該函數將返回一個整數年份。否則,我們將得到“不”。您可能還想進一步挖掘元數據,例如示例、設計器或鍵入規則。

收藏鏈接

我們還需要一個函數——該函數讀取給定語言的對象并輸出其他編程語言的列表。

仔細看看上面代碼的嵌套部分,這是怎么回事?

該函數利用了對象具有結構一致性的事實。表格中的信息是按行存儲的(相關的 HTML 標簽是)。一行包含文本“\ \ n”。函數的第一部分找出這是哪一行。

一旦找到這一行,就可以確定下一行包含到受當前行影響的每種編程語言的鏈接。使用 ("a") 來查找這些鏈接——其中參數 "a" 對應于 HTML 標簽。

對于每個鏈接 j,將其 [""] 屬性添加到名為 out 的列表中。對 [""] 屬性感興趣的原因是因為它將與存儲在節點中的語言名稱完全匹配。

例如,Java 在節點中存儲為“Java(編程語言)”,因此需要在整個數據集中使用這個確切的名稱。

如果執行成功,() 將返回一組編程語言。函數的其余部分處理異常,以防止程序在某個階段出現問題。

數據采集

最后,當一切準備就緒時執行腳本以收集數據并將其存儲在兩個列表對象中。

現在編寫一個循環,將之前定義的函數應用于 in 中的每個條目,并將輸出存儲在 和 meta 中。

該函數使用節點中的每種語言并嘗試從維基百科頁面檢索匯總表。

然后,該函數將檢索表中列出的與目標語言相關聯的所有語言。

對于同時出現在節點列表中的每種語言,添加一個[","]形式的元素。通過這種方式,創建了一個邊列表并將其傳遞給。

出于調試目的,打印添加的每個元素 - 這只是為了確保一切正常。如果想調試的更徹底,還可以在語句中添加語句。

接下來,獲取語言的名稱和年份并將其添加到元列表中。

寫入CSV文件

循環運行后,最后一步是將 和 meta 的內容寫入 CSV 文件。通過使用之前導入的 csv 模塊編程語言圖案,完成上一步就容易多了。

就是這樣!保存腳本并從終端運行它:

$.py

構建邊列表時,可以看到腳本輸出-yes。確保網絡連接穩定后,您可以等待結果,腳本將發揮作用。

第 3 步:用于創建圖形

希望您已經安裝并運行?,F在您可以創建一個新項目并使用您收集的數據來構建有向圖。有向圖將展示不同的編程語言如何相互影響!

首先在中創建一個新項目,然后切換到“數據實驗室”窗口。提供擴展接口來處理數據。首先,導入列表。

單擊“導入電子表格”。

選擇腳本生成的 .csv 文件。確保使用逗號作為分隔符。

從列表類型中選擇“側列表”

單擊“下一步”,將源列和目標列作為字符串導入,并檢查。

使用節點列表更新數據實驗室?,F在,導入 .csv 文件。這次,從列表類型中選擇“節點列表”。

切換到“”選項卡以查看網絡外觀。

此時的圖形看起來顏色很單一,雜亂無章編程語言圖案,就像一盤意大利面。所以接下來我們要美化圖像。

圖像美化

我們可以通過多種方式展示圖像,也可以充分發揮我們的創造力。此外,關于網絡可視化,還需要考慮三件事:

節點定位:生成網絡布局模式的算法有很多。最流行的是算法,它支持這種算法。

節點大?。簣D中節點的大小可以用來表示一些有趣的屬性。通常,這是一個中心性度量。衡量中心性的方法有很多,但它們都反映了給定節點的“重要性”,即它與網絡其他部分的關聯程度。

節點著色:我們還可以使用顏色來顯示節點的某些屬性。通常,顏色用于表示社區結構,廣義上將其定義為“一組比圖中其他部分更密切相關的節點”。在社交網絡中,社區結構可以揭示個人友誼、家庭或專業團體之間的聯系。檢測社區結構的算法有很多種,內置的檢測算法就是方法。

要執行上述步驟,需要計算一些統計信息。切換到“”窗口。在這里,您可以看到右側的面板。它包含一個“”選項卡。打開它,您將看到一系列選項。

有許多內置的統計功能。對于每個功能,單擊“運行”將生成一份報告,其中顯示了有關網絡的一些見解。

如果我們想修改網絡的外觀,我們可以轉到左側面板。

在“”選項卡中,您可以選擇要使用的布局算法。點擊“運行”,實時觀看圖表變化!看看您認為哪種布局算法效果最好。

選項卡上方是“”選項卡。在這里,可以設置節點和每條邊的顏色、大小和標簽,也可以根據數據的屬性(包括要計算的數據)進行配置。

一個建議:

根據模塊化屬性為節點著色。著色基于節點的社區成員資格。

根據節點的平均度數確定節點的大小。密切相關的節點將比稀疏相關的節點顯得更大。

但是,您也可以嘗試設計自己喜歡的布局。一旦您對圖形的外觀感到滿意,就可以進行最后一步——將圖形導出到網頁!

第 4 步:使用 .js 插件

現在您已經構建了一個可以查看的網絡可視化,您可以選擇使用屏幕截圖或將圖形保存為 SVG、pDF 或 pNG 格式。

如果您安裝了.js插件,還可以將圖形導出為HTML,這將創建一個交互式可視化,不僅可以在線發布,還可以上傳并與他人共享。

您可以從菜單欄中選擇“>.js 模板...”。

根據需要填寫詳細信息。確保選擇導出項目所在的目錄。您還可以更改圖表的標題、圖例、描述、懸停和許多其他詳細信息。準備好后,單擊“確定”。

現在,如果您打開導出項目所在的目錄,您將看到一個文件夾,其中包含 .js 生成的所有文件。

在您喜歡的瀏覽器中打開 .html 文件。哈!你的網絡!如果您了解一些 CSS 和 Java,您可以將各種生成的文件加載到您的網絡中,以根據您的意愿調整輸出網絡。

敞開心扉,在網上畫畫

許多系統可以建模和可視化為網絡。圖論是數學的一個分支,它提供了幫助理解網絡結構和屬性的工具。

使用從程序中獲得的數據來構建編程語言的影響圖。相關性標準是一種給定的語言是否可以被列為對另一種語言設計的影響。

.js 是一個用于分析和可視化網絡的開源工具。它們允許您以圖像、pDF 或 Web 格式導出 Web。

模仿本文中的方法,您還可以對許多其他關系進行建模和可視化。我敞開心扉,開始在互聯網上畫畫。

原文鏈接:

網站標題:教你制作一張編程語言的關系網絡圖(一)_
當前路徑:http://m.newbst.com/news25/299775.html

成都網站建設公司_創新互聯,為您提供服務器托管商城網站、響應式網站域名注冊、動態網站品牌網站制作

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

營銷型網站建設