標籤:

介紹用Gephi進行數據可視化

前提介紹:首先感謝 @崔斯特 在抓取數據中對我的協助。

這篇文章介紹的是數據可視化(Data visualization)的一些具體應用。

主要用到的工具 Python (抓取數據和分析數據), Gephi (數據可視化軟體)

(另外: 我會介紹到兩個在Facebook (Netvizz v1.42) 上抓取數據的app)先上圖:

這是以五月天Fan-mily(原May Day Fan-mily) Facebook Group 為收集數據的來源製作的 社交網路關係圖。

而這幅圖是從《哈利波特與魔法石》中提取製作的 人物關係圖。

好!我們正式開始!!

首先,我們看看如何獲得數據。

這裡主要分兩種數據獲取的模式:

1, 從網路直接獲取的數據

2, 通過數據分析獲得的數據

那第一種從網路直接獲取的數據的方式有很多啦。像流行的Python爬蟲 或者從 網站開放的API獲取。

這裡介紹的Netvizz 就是Facebook 開放API 提取數據的app.

可以翻牆的同學可以直接在Facebook 的搜索欄直接輸入 Netvizz 就可以找到了。

圖1

但有一點需要注意,為了保證用戶隱私 Facebook 已經關閉了個人用戶的API介面數據提取的服務。

所以,我們現在只能獲得小組和頁面的數據。

圖2

選擇小組數據(Group data)後,我們會進入一個選項頁面 (圖3)。在這裡我們要填寫小組id (group id),那小組ID怎麼獲得呢? 點擊旁邊的 find group ids here。進入Lookup-id.com,將選擇的FB小組的連接填入,就會得到一串數字,那就是小組ID(圖5)。

(注意哦,Data to get 的勾勾要去掉)

圖3

圖4

圖5

然後回到Netvizz頁面。將ID輸入,然後就可以進行抓取了。

下載文件中會有個 .gdf 的文件夾,用Gehpi將其打開就可以見到初始化的畫面。

圖6

控制面板的左邊是:

Node(節點):控制畫面中的小點點。

Edges(邊):連接點的線。

Layout(布局):依據演算法改變這個點與線的分布。

樣式大家可以自由發揮啦,難度也不大。想學精細點的同學可以上Gephi官網上看看,那有很多具體的教程。

圖7

以我這次講Node中的Attribute 設置成為 Comment_count,Layout 選擇Fruchterman Reingold 演算法,關於這些布局演算法(force-directed layout algorithm)的詳情,其基本思想是通過移動節點和改變它們之間的力,以盡量減少系統的能量。其他幾個演算法大家可以在wiki上搜索下。於是黑黑的網格就變成富有結構和色彩了。

圖8

右邊是統計相關的數據,很多意思我也不懂啦,也在學習中,這裡就不多介紹了。

關於 哈利波特與魔法石 的那幅圖是怎麼做出來的問題?

首先要從網上找到 哈利波特與魔法石 的文本並下載下來。

這一部分的爬蟲是 @崔斯特 幫助我完成的,在這裡再度表示感謝!

把小說弄到手後。

這就需要用到Python 對整本書進行文本分析。

在進行分析前,我們首先要創建一個人物名稱的list。

從百度搜索 哈利波特的 人物表 製作成txt 如下:

這裡選擇用 jieba 進行分詞

然後定義3個關係

之後按照字典類型names保存人物,該字典的鍵為人物名稱,值為該人物在全文中出現的次數。字典類型relationships保存人物關係的有向邊,該字典的鍵為有向邊的起點,值為一個字典edge,edge的鍵是有向邊的終點,值是有向邊的權值,代表兩個人物之間聯繫的緊密程度。lineNames是一個緩存變數,保存對每一段分詞得到當前段中出現的人物名稱,lineNames[i]是一個列表,列表中存儲第i段中出現過的人物。

得到node.txt 和 edge.txt, 之後導入Gephi。選 Import spreadsheet, 分別導入 node.txt (選項中選擇節點圖) 和 edge.txt (

選項中選擇邊表圖)。

之後的美化和用演算法調整布局,大家就可以自由發揮啦。

最後,在介紹幾個社交網路分析的概念吧。

第一:網路密度 (Network Density

一個網路的密度是在一個給定的網路中的關係(邊)的數目在網路中的節點之間的可能的關係的總數的比率

這是一個常用的措施,以確定如何連接良好的網路

一個完全連通的網路密度為1

而下面的網路舉例顯示密度為0.83

公式: 可觀測到的實際聯繫/全部潛在的聯繫=關係密度

如圖,可見關係數為(5),可能關係數(6),所以關係密度 5/6

密度是一個有用的措施互相比較網路

密度測度與跟蹤諸如信息擴散(如思想、謠言、疾病傳播等)的現象有關。

這是因為它假定,在緊密連接的網路中,信息的傳播速度更快,達到更廣泛的節點集

網路密度越大,越有可能被認為是一個有凝聚力的社區(即社會支持和有效傳播的來源)

第二:層 (Degree)

指特定行動者對網路其他成員持有的關係的數量和類型

主要分: 單方向性關係 (directed relationship)和 對稱關係 (symmetric relationship)

In-Degree

特定節點與他人的關係

Out-Degree

表明節點1和2之間的往複運動

基本上是一個衡量領帶強度,這是同樣相關的分析整個網路 (Weight Degree )

測量權重可以:互動頻率、交換項目數、個體對關係強度的感知

3,結構洞 (Structural Holes)

結構空洞的思想描述了網路密度的相反,即缺乏連接。

結構孔歸因於節點,否則連接密集的網路部分,是分成重要的連接節點。連接網路部分的這些節點被稱為「Brokers」。

例如那幾個大點點。

弱聯繫的概念與結構空洞的概念密切相關

類似於結構孔,弱關係在網路中嵌入較少。

儘管如此,他們承擔重要的職能:

他們促進信息流之間的集群(即從遙遠的部分網路)

弱聯繫有助於整合社會系統,否則將支離破碎和語無倫次

4. 集群 (Clustering)

計算和識別網路中的集群,特別是大型網路可能很麻煩

預定義的演算法有助於識別集群,因此網路內的社區

Force Atlas 和 Force Altas 2:最常用的一種演算法來確定在大型網路社區(在Gephi為例)

使用的演算法的優勢:沒有現有的知識圖理論需要可視化和分析集群網路

缺點:他們的準確性是高度依賴於我們正在分析的網路類型。

Reference:

關於演算法內容可以從這篇文章入手 Force Atlas : ForceAtlas2, a Continuous Graph Layout Algorithm for Handy Network Visualization Designed for the Gephi Software

Python基於共現提取《釜山行》人物關係 的教程完成:Python基於共現提取《釜山行》人物關係 - houjingyi的博客 - 博客頻道 - CSDN.NET


推薦閱讀:

TAG:Gephi |