圖資料集cora詳解
cora資料集- 下載地址https://linqs-data.soe.ucsc.edu/public/lbc/cora.tgz
內容介紹:
樣本特徵,標籤,鄰接矩陣
該資料集共2708個樣本點,每個樣本點都是一篇科學論文,所有樣本點被分為8個類別
類別分別是1)基於案例;2)遺傳演算法;3)神經網路;4)概率方法;5)強化學習;6)規則學習;7)理論
每篇論文都由一個1433維的詞向量表示,所以,每個樣本點具有1433個特徵。詞向量的每個元素都對應一個詞,且該元素只有0或1兩個取值。取0表示該元素對應的詞不在論文中,取1表示在論文中。所有的詞來源於一個具有1433個詞的字典。
每篇論文都至少引用了一篇其他論文,或者被其他論文引用,也就是樣本點之間存在聯絡,沒有任何一個樣本點與其他樣本點完全沒聯絡。如果將樣本點看做圖中的點,則這是一個連通的圖,不存在孤立點(?)
檔案格式
下載的壓縮包中有三個檔案,分別是cora.cites,cora.content,README。
資料集兩個檔案:
1個是cora.content 節點的特徵
1個是cora.cires 邊的資訊
README是對資料集的介紹;cora.content是所有論文的獨自的資訊;cora.cites是論文之間的引用記錄。
cora.content共有2708行,每一行代表一個樣本點,即一篇論文。
如下所示,每一行由三部分組成,分別是論文的編號,如31336;論文的詞向量,一個有1433位的二進位制;論文的類別,如Neural_Networks。
cora.cites共5429行
-
cora資料集- 用python處理
-
用python匯入資料,並分離樣本特徵,標籤,建立鄰接矩陣
-
1.匯入資料
-
import pandas as pd import numpy as np # 匯入資料:分隔符為空格 raw_data = pd.read_csv('data/cora/cora.content',sep = '\t',header = None) num = raw_data.shape[0] # 樣本點數2708
2.將論文的編號轉化為[0,2707]
-
# 將論文的編號轉[0,2707] a = list(raw_data.index) b = list(raw_data[0]) c = zip(b,a) map = dict(c)
3.提取詞向量,成為特徵矩陣
-
# 將詞向量提取為特徵,第二行到倒數第二行 features =raw_data.iloc[:,1:-1] # 檢查特徵:共1433個特徵,2708個樣本點 print(features.shape)
4.提取標籤,進行獨熱編碼
-
labels = pd.get_dummies(raw_data[1434]) print(labels.head(3))
標籤的前3行如下
-
Case_Based Genetic_Algorithms Neural_Networks Probabilistic_Methods \ 0 0 0 1 0 1 0 0 0 0 2 0 0 0 0 Reinforcement_Learning Rule_Learning Theory 0 0 0 0 1 0 1 0 2 1 0 0
5.匯入論文引用資料
raw_data_cites = pd.read_csv('data/cora/cora.cites',sep = '\t',header = None)
6. 建立鄰接矩陣
# 建立一個規模和鄰接矩陣一樣大小的矩陣 matrix = np.zeros((num,num)) # 建立鄰接矩陣 for i ,j in zip(raw_data_cites[0],raw_data_cites[1]): x = map[i] ; y = map[j] #替換論文編號為[0,2707] matrix[x][y] = matrix[y][x] = 1 #有引用關係的樣本點之間取1 # 檢視鄰接矩陣的元素和(按每列彙總) print(sum(matrix))
參考: https://blog.csdn.net/yeziand01/article/details/93374216