任務說明
學習主題:作者關聯(資料建模任務),對**作者關係進行建模,統計最常出現的作者關係;
學習內容:構建作者關係圖,挖掘作者關係
學習成果:**作者知識圖譜、圖關係挖掘
資料處理步驟
將作者列表進行處理,並完成統計。具體步驟如下:
將**第一作者與其他作者(**非第一作者)構建圖;社交網路分析使用圖演算法統計圖中作者與其他作者的聯絡;
圖是複雜網路研究中的乙個重要概念。graph是用點和線來刻畫離散事物集合中的每對事物間以某種方式相聯絡的數學模型。graph在現實世界中隨處可見,如交通運輸圖、旅遊圖、流程圖等。利用圖可以描述現實生活中的許多事物,如用點可以表示交叉口,點之間的連線表示路徑,這樣就可以輕而易舉的描繪出乙個交通運輸網路。
指有向圖,考慮了邊的有向性。多重無向圖,即兩個結點之間的邊數多於一條,又允許頂點通過同一條邊和自己關聯。
度:是指和該節點相關聯的邊的條數,又稱關聯度。對於有向圖,節點的入度 是指進入該節點的邊的條數;節點的出度是指從該節點出發的邊的條數;**迪傑斯特拉路徑:.從乙個源點到其它各點的最短路徑,可使用迪傑斯特拉演算法來求最短路徑;
連通圖:在乙個無向圖 g 中,若從頂點i到頂點j有路徑相連,則稱i和j是連通的。如果 g
是有向圖,那麼連線i和j的路徑中所有的邊都必須同向。如果圖中任意兩點都是連通的,那麼圖被稱作連通圖。如果此圖是有向圖,則稱為強連通圖。
# 匯入所需的package
import json # 讀取資料,我們的資料為json格式的
import pandas as pd # 資料處理,資料分析
import matplotlib.pyplot as plt # 畫圖工具
# 讀入資料
from networkx.algorithms.threshold import degree_sequence
data =
# 初始化
# 使用with語句優勢:1.自動關閉檔案控制代碼;2.自動顯示(處理)檔案讀取資料異常
with
open
("arxiv-metadata-oai-snapshot.json"
,'r'
)as f:
for index, line in
enumerate
(f):
if index !=
1000
: d = json.loads(line)
d =else
:break
data = pd.dataframe(data)
# 將list變為dataframe格式,方便使用pandas進行分析
import networkx as nx
# 建立無向圖
g = nx.graph(
)# 只用五篇**進行構建
for row in data.iloc[
:100
].itertuples():
print
(row)
authors = row[1]
authors =
[' '
.join(x[:-
1])for x in authors]
# 第乙個作者 與 其他作者鏈結
for author in authors[1:
]:g.add_edge(authors[0]
, author)
# 新增節點2,3並鏈結23節點
print
(nx.draw(g, with_labels=
true))
try:
print
(nx.dijkstra_path(g,
'balázs c.'
,'ziambaras eleni'))
except
:print
('no path'
)# 如果我們500片**構建圖,則可以得到更加完整作者關係,並選擇最大聯通子圖進行繪製,折線圖為子圖節點度值。
# 計算**關係中有多少個聯通子圖
print
(len
(nx.communicability(g)))
plt.loglog(degree_sequence,
"b-"
, marker=
"o")
plt.title(
"degree rank plot"
)plt.ylabel(
"degree"
)plt.xlabel(
"rank"
)# draw graph in inset
plt.axes(
[0.45
,0.45
,0.45
,0.45])
gcc = g.subgraph(
sorted
(nx.connected_components(g)
, key=
len, reverse=
true)[
0])pos = nx.spring_layout(gcc)
plt.axis(
"off"
)nx.draw_networkx_nodes(gcc, pos, node_size=20)
nx.draw_networkx_edges(gcc, pos, alpha=
0.4)
plt.show(
)
Datawhale 資料分析打卡1
參加了由datawhale舉辦的小組學習活動,學習內容為資料分析,記錄下第一章的所學內容 在資料處理中,第一步通常都需要匯入資料,並進行對資料的初步預覽 導入庫匯入所需資料庫 import numpy as np import pandas as pd 載入資料pd.read csv filenam...
Datawhale之動手學資料分析第二章(二)
list up text left up,text right up result up pd.concat list up,axis 1 result up.head list down text left down,text right down result down pd.concat li...
Datawhale之動手學資料分析第一章
step1 匯入numpy pandas庫 step2 載入資料 1.1檢視資料的基本資訊 df.info 1.2觀察dataframe物件的前n行 後n行 df.head n df.tail 1.3判斷資料是否為空,為空的地方返回true,其餘地方返回false df.isnull head 1....