一 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。
  • README是对数据集的介绍;cora.content是所有论文的独自的信息;cora.cites是论文之间的引用记录。

cora.content

共有2708行,每一行代表一个样本点,即一篇论文。如下所示,每一行由三部分组成,

  • 分别是论文的编号,如31336;
  • 论文的词向量,一个有1433位的二进制, 表示1433个词汇中的每个单词在文章中是存在(由1表示)还是不存在(由0表示)
  • 论文的类别,如Neural_Networks。

因此该数据的特征应该有 1433 个维度,另外加上第一个字段 idx,最后一个字段 label, 一共有 1433 + 2 个维度。

31336    0    0.....    0    0    0    0    0    0    0    0    0    0    0    0    Neural_Networks
1061127    0    0.....    0    0    0    0    0    0    0    0    0    0    0    0    Rule_Learning
1106406    0    0.....    0    0    0    0    0    0    0    0    0    0    0    Reinforcement_Learning

cora.cites

  • 共5429行, 每一行有两个论文编号,表示第一个编号的论文先写,第二个编号的论文引用第一个编号的论文。如下所示:
35    1033
35    103482
35    103515
  • 如果将论文看做图中的点,那么这5429行便是点之间的5429条边。

三 用Python处理

用python导入数据,并分离样本特征,标签,创建邻接矩阵

import numpy as np
import scipy.sparse as sp
import torchimport 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# 将论文的编号转[0,2707]
a = list(raw_data.index)
b = list(raw_data[0])
c = zip(b, a)
map = dict(c)# 将词向量提取为特征,第二行到倒数第二行
features = raw_data.iloc[:, 1:-1]
# 检查特征:共1433个特征,2708个样本点
print(features.shape)labels = pd.get_dummies(raw_data[1434])
print(labels.head(3))raw_data_cites = pd.read_csv('../data/cora/cora.cites', sep='\t', header=None)# 创建一个规模和邻接矩阵一样大小的矩阵
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))
import numpy as np
import scipy.sparse as sp
import torchdef encode_onehot(labels):classes = set(labels)classes_dict = {c: np.identity(len(classes))[i, :] for i, c inenumerate(classes)}labels_onehot = np.array(list(map(classes_dict.get, labels)),dtype=np.int32)return labels_onehotdef normalize(mx):"""Row-normalize sparse matrix"""rowsum = np.array(mx.sum(1))r_inv = np.power(rowsum, -1).flatten()r_inv[np.isinf(r_inv)] = 0.r_mat_inv = sp.diags(r_inv)mx = r_mat_inv.dot(mx)return mxdef normalize_adj(adjacency):degree = np.array(adjacency.sum(1))d_hat = sp.diags(np.power(degree, -0.5).flatten())adj_norm = d_hat.dot(adjacency).dot(d_hat).tocoo()return adj_normdef normalize_features(features):return features / features.sum(1)def load_data(path="../data/cora/", dataset="cora"):"""Load citation network dataset (cora only for now)"""print('Loading {} dataset...'.format(dataset))idx_features_labels = np.genfromtxt("{}{}.content".format(path, dataset),dtype=np.dtype(str))features = sp.csr_matrix(idx_features_labels[:, 1:-1], dtype=np.float32)labels = encode_onehot(idx_features_labels[:, -1])# build graphidx = np.array(idx_features_labels[:, 0], dtype=np.int32)idx_map = {j: i for i, j in enumerate(idx)}edges_unordered = np.genfromtxt("{}{}.cites".format(path, dataset),dtype=np.int32)edges = np.array(list(map(idx_map.get, edges_unordered.flatten())),dtype=np.int32).reshape(edges_unordered.shape)adj = sp.coo_matrix((np.ones(edges.shape[0]), (edges[:, 0], edges[:, 1])),shape=(labels.shape[0], labels.shape[0]),dtype=np.float32)# build symmetric adjacency matrixadj = adj + adj.T.multiply(adj.T > adj) - adj.multiply(adj.T > adj)features = normalize_features(features)adj = normalize_adj(adj + sp.eye(adj.shape[0]))idx_train = range(140)idx_val = range(200, 500)idx_test = range(500, 1500)features = torch.FloatTensor(np.array(features))labels = torch.LongTensor(np.where(labels)[1])adj = torch.FloatTensor(np.array(adj.todense()))idx_train = torch.LongTensor(idx_train)idx_val = torch.LongTensor(idx_val)idx_test = torch.LongTensor(idx_test)return adj, features, labels, idx_train, idx_val, idx_test# Load data
adj, features, labels, idx_train, idx_val, idx_test = load_data()

图数据集之cora数据集介绍 --- 适用于GCN任务相关推荐

  1. GCN实战深入浅出图神经网络第五章:基于Cora数据集的GCN节点分类 代码分析

    GCN实战深入浅出图神经网络第五章:基于Cora数据集的GCN节点分类 代码分析 文章目录 GCN实战深入浅出图神经网络第五章:基于Cora数据集的GCN节点分类 代码分析 SetUp,库声明 数据准 ...

  2. 图网络常用数据集总结——Cora, CiteSeer, PubMed, PPI, BlogCatalog, Yelp

    Cora数据集(引文网络)由机器学习论文组成,是近年来图深度学习很喜欢使用的数据集.该数据集共2708个样本点,每个样本点都是一篇科学论文,所有样本点被分为8个类别,类别分别是: 1)基于案例:2)遗 ...

  3. 【Pytorch神经网络实战案例】21 基于Cora数据集实现Multi_Sample Dropout图卷积网络模型的论文分类

    Multi-sample Dropout是Dropout的一个变种方法,该方法比普通Dropout的泛化能力更好,同时又可以缩短模型的训练时间.XMuli-sampleDropout还可以降低训练集和 ...

  4. 【Pytorch神经网络实战案例】20 基于Cora数据集实现图卷积神经网络论文分类

    1 案例说明(图卷积神经网络) CORA数据集里面含有每一篇论文的关键词以及分类信息,同时还有论文间互相引用的信息.搭建AI模型,对数据集中的论文信息进行分析,根据已有论文的分类特征,从而预测出未知分 ...

  5. 通过GCN来实现对Cora数据集节点的分类

    代码来自<深入浅出图神经网络:GNN原理解析> 本节我们通过一个完整的例子来理解 如何通过GCN来实现对节点的分类. 我们使用的是Cora数据集,该数据集由2708篇论文,及它们之间的引用 ...

  6. Tensorflow2.0的简单GCN代码(使用cora数据集)

    废话不多说先放代码. 本文的代码需要两个部分组成--自定义的GCN层的GCN_layer和训练代码train. 首先是自定义的GCN层的GCN_layer.py: import tensorflow ...

  7. DGL教程【一】使用Cora数据集进行分类

    本教程将演示如何构建一个基于半监督的节点分类任务的GNN网络,任务基于一个小数据集Cora,这是一个将论文作为节点,引用关系作为边的网络结构. 任务就是预测一个论文的所属分类.每一个论文包含一个词频信 ...

  8. PYG教程【三】对Cora数据集进行半监督节点分类

    Cora数据集 PyG包含有大量的基准数据集.初始化数据集非常简单,数据集初始化会自动下载原始数据文件,并且会将它们处理成Data格式. 如下图所示,Cora数据集中只有一个图,该图包含2708个节点 ...

  9. PyG(PyTorch Geometric)安装教程(附Cora数据集)

    PyG(PyTorch Geometric)安装教程(附Cora数据集) PyG是多特蒙德工业大学(Technische University Dortmund)的Matthias Fey博士基于Py ...

最新文章

  1. vue中的computed 与 watch
  2. MyBatis 插件怎么编写和使用?原理是什么?
  3. nvcc fatal : Unsupported gpu architecture 'compute_11'
  4. 转:ArcGIS提取面状道路中心线(转载)
  5. 想多了!亚马逊中国没有离开 | 畅言
  6. 惠普企业:自今年10月起,固件 bug 将导致某些 SSD 不可用
  7. [转载] 字符串最长重复子串python_查找字符串中重复字符的最长子字符串
  8. 优先级反转之futex(一)
  9. [数据结构] 左偏树
  10. python获取百度迁徙大数据
  11. lanproxy搭建内网穿透
  12. 两台虚拟服务器如何串联,两台tp-link路由器串联设置教程 | 192路由网
  13. Dota 2 - Character Art Guide
  14. 百度OCR识别手写签名识别率不高解决
  15. 动态IP与静态ip的区别是什么
  16. http文件服务器(Ubuntu)
  17. UVa 207 - PGA Tour Prize Money(模拟)
  18. 解决 Windows资源保护找到了损坏文件但无法修复问题
  19. 2019年总结和展望
  20. 尼康相机照片怎么恢复

热门文章

  1. vue e-charts按需引入
  2. IT工作一年的总结——来自一个小菜鸟
  3. MyBatis基本配置和实践(三)
  4. IDEA Java Web 推送Tomcat
  5. Mysql基本用法-01
  6. first() mysql_EF6配合MySQL或MSSQL(CodeFirst模式)配置指引
  7. python数据类型可变和不可变_Python——可变和不可变类型数据
  8. idea工作台输出的日志详解_详解linux下nohup日志输出过大问题解决方案--分批切割...
  9. hdu 1408(高精度)坑人嫩
  10. 【阿里妈妈营销科学系列】第六篇:营销组合模型MMM