1. 程式人生 > 其它 >圖資料集cora詳解

圖資料集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