Cora、Citeseer、Pubmed、Tox21形式のGCNで使用されるデータセット


この記事では、グラフ畳み込みネットワークGCNで使用されるいくつかのデータセットの形式を共有します

Cora、Citeseer、Pubmed

データセット ソース #図 #ノード #側 #特徴 #Label(y)
コーラ 「ネットワークデータの集合的分類」、AIマガジン、2008年 1 2708 5429 1433 7
Citeseer 「ネットワークデータの集合的分類」、AIマガジン、2008年 1 3327 4732 3703 6
Pubmed 「ネットワークデータの集合的分類」、AIマガジン、2008年 1 19717 44338 500 3
├── gcn
│   ├── data          //图数据
│   │   ├── ind.citeseer.allx
│   │   ├── ind.citeseer.ally
│   │   ├── ind.citeseer.graph
│   │   ├── ind.citeseer.test.index
│   │   ├── ind.citeseer.tx
│   │   ├── ind.citeseer.ty
│   │   ├── ind.citeseer.x
│   │   ├── ind.citeseer.y
│   │   ├── ind.cora.allx
│   │   ├── ind.cora.ally
│   │   ├── ind.cora.graph
│   │   ├── ind.cora.test.index
│   │   ├── ind.cora.tx
│   │   ├── ind.cora.ty
│   │   ├── ind.cora.x
│   │   ├── ind.cora.y
│   │   ├── ind.pubmed.allx
│   │   ├── ind.pubmed.ally
│   │   ├── ind.pubmed.graph
│   │   ├── ind.pubmed.test.index
│   │   ├── ind.pubmed.tx
│   │   ├── ind.pubmed.ty
│   │   ├── ind.pubmed.x
│   │   └── ind.pubmed.y
│   ├── __init__.py
│   ├── inits.py    //初始化的公用函数
│   ├── layers.py   //GCN层定义
│   ├── metrics.py  //评测指标的计算
│   ├── models.py   //模型结构定义
│   ├── train.py    //训练
│   └── utils.py    //工具函数的定义
├── LICENCE
├── README.md
├── requirements.txt
└── setup.py

3種類のデータは、次の8つのファイルで構成されており、ストレージ形式は類似しています

ind.dataset_str.x => the feature vectors of the training instances as scipy.sparse.csr.csr_matrix object;
ind.dataset_str.tx => the feature vectors of the test instances as scipy.sparse.csr.csr_matrix object;
ind.dataset_str.allx => the feature vectors of both labeled and unlabeled training instances 
    (a superset of ind.dataset_str.x) as scipy.sparse.csr.csr_matrix object;
    
ind.dataset_str.y => the one-hot labels of the labeled training instances as numpy.ndarray object;
ind.dataset_str.ty => the one-hot labels of the test instances as numpy.ndarray object;
ind.dataset_str.ally => the labels for instances in ind.dataset_str.allx as numpy.ndarray object;

ind.dataset_str.graph => a dict in the format {index: [index_of_neighbor_nodes]} as collections.defaultdict object;
ind.dataset_str.test.index => the indices of test instances in graph, for the inductive setting as list object.

All objects above must be saved using python pickle module.
    
以cora为例:
ind.dataset_str.x => 训练实例的特征向量,是scipy.sparse.csr.csr_matrix类对象,shape:(140, 1433)
ind.dataset_str.tx => 测试实例的特征向量,shape:(1000, 1433)
ind.dataset_str.allx => 有标签的+无无标签训练实例的特征向量,是ind.dataset_str.x的超集,shape:(1708, 1433)

ind.dataset_str.y => 训练实例的标签,独热编码,numpy.ndarray类的实例,是numpy.ndarray对象,shape:(140, 7)
ind.dataset_str.ty => 测试实例的标签,独热编码,numpy.ndarray类的实例,shape:(1000, 7)
ind.dataset_str.ally => 对应于ind.dataset_str.allx的标签,独热编码,shape:(1708, 7)

ind.dataset_str.graph => 图数据,collections.defaultdict类的实例,格式为 {index:[index_of_neighbor_nodes]}
ind.dataset_str.test.index => 测试实例的id,2157行

上述文件必须都用python的pickle模块存储
  • グラフ畳み込みネットワークを使用した半教師あり分類の論文のGCNは半教師あり学習であるため、一部のトレーニングデータセットにはラベルがあり、一部にはラベルがありません。

例としてコーラを取る

元のデータセットリンク:http//linqs.cs.umd.edu/projects/projects/lbc/
データセット分割方法:https//github.com/kimiyoung/planetoid(Zhilin Yang、William W. Cohen、Ruslan Salakhutdinov 、グラフ埋め込みを使用した半教師あり学習の再検討、ICML 2016)

Coraデータセットは機械学習ペーパーで構成されており、近年グラフの深層学習に使用されているデータセットです。データセットでは、論文は次の7つのカテゴリのいずれかに分類されます。

  • 事例ベース
  • 遺伝的アルゴリズム
  • ニューラルネットワーク
  • 確率的手法
  • 強化学習
  • ルール学習
  • 理論

論文の選択は、各論文が最終コーパス内の少なくとも1つの他の論文によって引用または引用されることです。コーパス全体に2708の論文があります。

語尾をステミングして削除した後、1433個の固有の単語だけが残ります。文書頻度が10未満の単語はすべて削除されます。coraデータセットには1433個の一意の単語が含まれているため、特徴は1433次元です。0と1は、各単語が論文に存在するかどうかを示します。

変数データはscipy.sparse.csr.csr_matrixであり、スパース行列に似ています。出力は、行列のゼロ以外の行と列の座標と値です。

データ形式の例
(1)--------------------------------------ind.cora.x
def load_cora():
    names = ['x']
    with open("data/ind.cora.x", 'rb') as f:
        if sys.version_info > (3, 0):
            print(f)  # <_io.BufferedReader name='data/ind.cora.x'>
            data = pkl.load(f, encoding='latin1')
            print(type(data)) #<class 'scipy.sparse.csr.csr_matrix'>

            print(data.shape)   #(140, 1433)-ind.cora.x是140行,1433列的
            print(data.shape[0]) #row:140
            print(data.shape[1]) #column:1433
            print(data[1])
  # 变量data是个scipy.sparse.csr.csr_matrix,类似稀疏矩阵,输出得到的是矩阵中非0的行列坐标及值
  # (0, 19)	1.0
  # (0, 88)	1.0
  # (0, 149)	1.0
  # (0, 212)	1.0
  # (0, 233)	1.0
  # (0, 332)	1.0
  # (0, 336)	1.0
  # (0, 359)	1.0
  # (0, 472)	1.0
  # (0, 507)	1.0
  # (0, 548)	1.0
  # ...

# print(data[100][1]) #IndexError: index (1) out of range
            nonzero=data.nonzero()
            print(nonzero)     #输出非零元素对应的行坐标和列坐标
# (array([  0,   0,   0, ..., 139, 139, 139], dtype=int32), array([  19,   81,  146, ..., 1263, 1274, 1393], dtype=int32))
            # nonzero是个tuple
            print(type(nonzero)) #<class 'tuple'>
            print(nonzero[0])    #行:[  0   0   0 ... 139 139 139]
            print(nonzero[1])    #列:[  19   81  146 ... 1263 1274 1393]
            print(nonzero[1][0])  #19
            print(data.toarray())
# [[0. 0. 0. ... 0. 0. 0.]
#  [0. 0. 0. ... 0. 0. 0.]
#  [0. 0. 0. ... 0. 0. 0.]
#  ...
#  [0. 0. 0. ... 0. 1. 0.]
#  [0. 0. 0. ... 0. 0. 0.]
#  [0. 1. 0. ... 0. 0. 0.]]

(2)--------------------------------------ind.cora.y

def load_cora():
    with open("data/ind.cora.y", 'rb') as f:
        if sys.version_info > (3, 0):
            print(f)  #<_io.BufferedReader name='data/ind.cora.y'>
            data = pkl.load(f, encoding='latin1')
            print(type(data)) #<class 'numpy.ndarray'>
            print(data.shape)   #(140, 7)
            print(data.shape[0]) #row:140
            print(data.shape[1]) #column:7
            print(data[1]) #[0 0 0 0 1 0 0]
            
(3)--------------------------------------ind.cora.graph

def load_cora():
    with open("data/ind.cora.graph", 'rb') as f:
        if sys.version_info > (3, 0):
            data = pkl.load(f, encoding='latin1')
            print(type(data)) #<class 'collections.defaultdict'>
            print(data) 
# defaultdict(<class 'list'>, {0: [633, 1862, 2582], 1: [2, 652, 654], 2: [1986, 332, 1666, 1, 1454], 
#   , ... , 
#   2706: [165, 2707, 1473, 169], 2707: [598, 165, 1473, 2706]})


(4)--------------------------------------ind.cora.test.index

test_idx_reorder = parse_index_file("data/ind.{}.test.index".format(dataset_str))
print("test index:",test_idx_reorder)
#test index: [2692, 2532, 2050, 1715, 2362, 2609, 2622, 1975, 2081, 1767, 2263,..]
print("min_index:",min(test_idx_reorder))
# min_index: 1708

(5)citeseer数据集中一些孤立点的特殊处理
    #处理citeseer中一些孤立的点
    if dataset_str == 'citeseer':
        # Fix citeseer dataset (there are some isolated nodes in the graph)
        # Find isolated nodes, add them as zero-vecs into the right position

        test_idx_range_full = range(min(test_idx_reorder), max(test_idx_reorder)+1)
        # print("test_idx_range_full.length",len(test_idx_range_full))
        #test_idx_range_full.length 1015

        #转化成LIL格式的稀疏矩阵,tx_extended.shape=(1015,1433)
        tx_extended = sp.lil_matrix((len(test_idx_range_full), x.shape[1]))
        # print(tx_extended)
        #[2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325
        # ....
        # 3321 3322 3323 3324 3325 3326]

        #test_idx_range-min(test_idx_range):列表中每个元素都减去min(test_idx_range),即将test_idx_range列表中的index值变为从0开始编号
        tx_extended[test_idx_range-min(test_idx_range), :] = tx
        # print(tx_extended.shape) #(1015, 3703)

        # print(tx_extended)
        # (0, 19) 1.0
        # (0, 21) 1.0
        # (0, 169) 1.0
        # (0, 170) 1.0
        # (0, 425) 1.0
        #  ...
        # (1014, 3243) 1.0
        # (1014, 3351) 1.0
        # (1014, 3472) 1.0

        tx = tx_extended
        # print(tx.shape)
        # (1015, 3703)
        #997,994,993,980,938...等15行全为0


        ty_extended = np.zeros((len(test_idx_range_full), y.shape[1]))
        ty_extended[test_idx_range-min(test_idx_range), :] = ty
        ty = ty_extended
        # for i in range(ty.shape[0]):
        #     print(i," ",ty[i])
        #     # 980 [0. 0. 0. 0. 0. 0.]
        #     # 994 [0. 0. 0. 0. 0. 0.]
        #     # 993 [0. 0. 0. 0. 0. 0.]

  • allxは、0〜1707、合計1708の、ラベル付きとラベルなしを含む、トレーニングセット内のすべてのトレーニング例です。
  • allyは、1708〜2707のallxに対応するラベルで、合計1000です。
  • citeseerのテストデータセットにはいくつかの孤立点があります(test.index、15には対応するインデックスはありません)。これらのポイントは、すべて0の機能を持つノードとしてテストセットtxに追加でき、対応するラベルはtyにあります。に
  • 入力は全体像であるため、txとallxは機能としてまとめられています
  • ラベルのないデータのy値:[0,0,0,0,0,0,0]
  • データセットの特徴もスパースであり、LILスパース行列に格納されます。形式は次のとおりです。
A=np.array([[1,0,2,0],[0,0,0,0],[3,0,0,0],[1,0,0,4]])
AS=sp.lil_matrix(A)
print(AS)
# (0, 0) 1
# (0, 2) 2
# (2, 0) 3
# (3, 0) 1
# (3, 3) 4

Tox21データセット

このデータセットは、PubChem Webサイトでの2014年のコンテストからのものです。https//tripod.nih.gov/tox21/challenge/about.jsp
PubChemは、米国国立衛生研究所(NIH)のオープン化学データベースです。無料の化学情報。
PubChemデータは、政府機関、化学薬品供給業者、ジャーナル発行者などを含む数百のデータソースによって提供されます。

21世紀の毒物学(Tox21)プログラムは、毒性評価のためのより良い方法を開発するための、NIH、環境保護庁、および食品医薬品局の連邦協力プログラムです。目標は、特定の化合物が健康への悪影響を引き起こす可能性のある人体のプロセスを混乱させる可能性があるかどうかを迅速かつ効果的にテストすることです。Tox21データセットは、コンテストで使用されたデータセットの1つであり、12の毒性試験によって決定された化合物の構造情報が含まれています。

  • エストロゲン受容体α、LBD(ER、LBD)
  • エストロゲン受容体α、フル(ER、フル)
  • 芳香
  • 芳香族炭化水素受容体(AhR)
  • アンドロゲン受容体、フル(AR、フル)
  • アンドロゲン受容体、LBD(AR、LBD)
  • ペルオキシソーム増殖因子活性化受容体γ(PPAR-γ)
  • 核因子(赤血球由来2)様2 /抗酸化応答要素(Nrf2 / ARE)
  • 熱ショック因子応答要素(HSE)
  • ATAD5
  • ミトコンドリア膜電位(MMP)
  • P53

各毒物学実験では、144203552-144214049のPUBCHEM_SID、環境に優しい化合物、一部のリストされた薬物、その他の物質を含む合計10486の化合物をテストしました。
たとえば、p53実験の測定結果はオンラインで表示できます

  • PubChem AID:生物活性識別レコードID
  • PubChem SID:物質ID
  • PubChem CID:化合物ID

データセットはここからダウンロードできます:https//tripod.nih.gov/tox21/challenge/data.jsp#

トレーニングセットとテストセットは、複数の分子構造で構成されるsdf形式のファイルです。
分子の情報保存形式は次のとおりです。

  • 最初の行:通常、NCGC00255644-01などの分子名として使用され、場合によってはスペース
  • 2行目:コメント、Marvin 07111412562D
  • 3行目:通常は空白行
  • 4行目:原子、キーなどの数の開始行です。
  • キーの数やMENDが配置されている行の終わりの原子の数などの情報。

以下は属性値であり、属性の数は可変です

  • プロパティ1
  • 属性1の値
  • 空行
  • 属性2
  • 属性2の値
  • 空行
  • (4つのドル記号で分子の情報ストレージを終了します。)
  • トレーニングセットでは、ラベルは「アクティブ」、「1」はアクティビティを意味し、「0」はアクティビティがないことを意味します
  • テストセットには、「アクティブ」というラベルはありません。

トレーニングセット内の分子の情報ストレージ形式は次のとおりです。

NCGC00255644-01
  Marvin  07111412562D          

 26 27  0  0  1  0            999 V2000
    4.5831   -4.3075    0.0000 O   0  0  0  0  0  0  0  0  0  0  0  0
    5.2840   -3.9061    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    5.9910   -4.3075    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    5.2840   -3.0973    0.0000 O   0  0  0  0  0  0  0  0  0  0  0  0
    1.4379   -1.6595    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    1.4379   -2.4863    0.0000 C   0  0  1  0  0  0  0  0  0  0  0  0
    2.1508   -2.0609    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    1.4379   -3.3010    0.0000 C   0  0  2  0  0  0  0  0  0  0  0  0
    0.7070   -2.0609    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    2.8577   -2.4863    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    2.1508   -1.2342    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    0.7070   -3.7084    0.0000 C   0  0  1  0  0  0  0  0  0  0  0  0
    2.1508   -3.7084    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    0.0000   -2.4863    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    2.8577   -3.3010    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    3.5646   -2.0609    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    2.8577   -0.8388    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    1.1323   -4.4273    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    0.3056   -4.4273    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    0.0000   -3.3010    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    3.5646   -1.2342    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    0.7189   -5.1463    0.0000 N   0  0  0  0  0  0  0  0  0  0  0  0
    4.2955   -0.8388    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    5.0085   -1.2342    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    4.2955    0.0000    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    1.4379   -4.1338    0.0000 H   0  0  0  0  0  0  0  0  0  0  0  0
  1  2  1  0  0  0  0
  2  3  1  0  0  0  0
  2  4  2  0  0  0  0
  6  5  1  1  0  0  0
  6  7  1  0  0  0  0
  6  8  1  0  0  0  0
  6  9  1  0  0  0  0
  7 10  1  0  0  0  0
  7 11  2  0  0  0  0
  8 12  1  0  0  0  0
  8 13  1  0  0  0  0
  8 26  1  6  0  0  0
  9 14  1  0  0  0  0
 10 15  1  0  0  0  0
 10 16  2  0  0  0  0
 11 17  1  0  0  0  0
 12 18  1  6  0  0  0
 12 19  1  1  0  0  0
 12 20  1  0  0  0  0
 13 15  1  0  0  0  0
 14 20  1  0  0  0  0
 16 21  1  0  0  0  0
 17 21  2  0  0  0  0
 18 22  1  0  0  0  0
 21 23  1  0  0  0  0
 23 24  1  0  0  0  0
 23 25  1  0  0  0  0
M  END
>  <Formula>
C22H35NO2

>  <FW>
345.5188 (60.0520+285.4668)

>  <DSSTox_CID>
27102

>  <Active>
0

$$$$

テストセット内の分子の情報ストレージ形式は次のとおりです。

NCGC00261443
  Marvin  10161415332D          

 20 22  0  0  1  0            999 V2000
    0.5185    2.9762    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    1.2330    2.5637    0.0000 N   0  0  0  0  0  0  0  0  0  0  0  0
    1.2330    1.7387    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    0.5185    1.3262    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   -0.2661    1.5812    0.0000 N   0  0  0  0  0  0  0  0  0  0  0  0
   -0.7510    0.9137    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   -0.2661    0.2463    0.0000 N   0  0  0  0  0  0  0  0  0  0  0  0
   -0.5210   -0.5383    0.0000 C   0  0  2  0  0  0  0  0  0  0  0  0
   -1.3056   -0.7933    0.0000 O   0  0  0  0  0  0  0  0  0  0  0  0
   -1.3056   -1.6183    0.0000 C   0  0  2  0  0  0  0  0  0  0  0  0
   -1.9731   -2.1032    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   -2.7268   -1.7676    0.0000 O   0  0  0  0  0  0  0  0  0  0  0  0
   -0.5210   -1.8732    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
   -0.2661   -2.6578    0.0000 O   0  0  0  0  0  0  0  0  0  0  0  0
   -0.0361   -1.2058    0.0000 C   0  0  1  0  0  0  0  0  0  0  0  0
    0.7889   -1.2058    0.0000 O   0  0  0  0  0  0  0  0  0  0  0  0
    0.5185    0.5012    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    1.2330    0.0887    0.0000 N   0  0  0  0  0  0  0  0  0  0  0  0
    1.9475    0.5012    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    1.9475    1.3262    0.0000 N   0  0  0  0  0  0  0  0  0  0  0  0
  1  2  1  0  0  0  0
  2  3  1  0  0  0  0
  3  4  2  0  0  0  0
  4  5  1  0  0  0  0
  5  6  2  0  0  0  0
  6  7  1  0  0  0  0
  7  8  1  0  0  0  0
  8  9  1  1  0  0  0
  9 10  1  0  0  0  0
 10 11  1  1  0  0  0
 11 12  1  0  0  0  0
 10 13  1  0  0  0  0
 13 14  1  0  0  0  0
 13 15  1  0  0  0  0
  8 15  1  0  0  0  0
 15 16  1  6  0  0  0
  7 17  1  0  0  0  0
  4 17  1  0  0  0  0
 17 18  2  0  0  0  0
 18 19  1  0  0  0  0
 19 20  2  0  0  0  0
  3 20  1  0  0  0  0
M  END
>  <Compound ID>
NCGC00261443

>  <Compound Batch ID>
NCGC00261443-01

>  <NR-AR>
0

>  <NR-AR-LBD>
0

>  <NR-AhR>
0

>  <NR-ER>
0

>  <NR-ER-LBD>
0

>  <NR-PPAR-gamma>
0

>  <SR-ARE>
0

>  <SR-ATAD5>
1

>  <SR-HSE>
0

>  <SR-MMP>
0

>  <SR-p53>
0

$$$$

目標は、トレーニングセットとアクティブラベルの分子構造情報に基づいて、テストセットの分子構造のアクティビティを予測することです。トレーニングセット内の分子はグラフを構成し、その中の原子とキーはノードとエッジを構成しますが、データセット内の原子とキーのより具体的な紹介は見つかりませんでした。の意味がわかりません。データの各行。

エラーが発生している箇所を指摘したいと思います。グループへようこそ。GNNとGCNを交換します(グループのコメント!!!、形式:名前- (学校またはその他の機関の情報)-研究の方向性)。

おすすめ

転載: blog.csdn.net/yyl424525/article/details/100831452