GCNcora数据集处理-数据集转邻接矩阵

深入GNN图神经网络后,才发现对于数据集的处理是最简单的

# 1.导入数据
import pandas as pd
import numpy as np

# 导入数据:分隔符为空格
raw_data = pd.read_csv('cora/cora.content', sep='\t', header=None)
num = raw_data.shape[0]  # 样本点数2708  num=2708
# 而对于矩阵来说:
# shape[0]:表示矩阵的行数
# shape[1]:表示矩阵的列数

# print(raw_data)  # raw_data输出为论文内容

# 2.将论文的编号转化为[0,2707]
a = list(raw_data.index)  # 索引
b = list(raw_data[0])  # 第 0 列
c = zip(b,
        a)  # 两个列表转化为一个列表,以元组为元素  # print(list(zip(b,a)))  # [(31336, 0), (1061127, 1), (1106406, 2), (13195, 3), (37879, 4), (1126012, 5), (1107140, 6), (1102850,
map = dict(c)  # map输出为{31336: 0, 1061127: 1, 1106406: 2, 13195: 3, 37879: 4, 1126012: 5}
# dict5 = dict(zip(['a', 'A'], [3, 4]))  # 传一个zip()函数
# print('dict5:', dict5)  # dict5: {'a': 3, 'A': 4}

# 3.提取词向量,成为特征矩阵
# 将词向量提取为特征,取第二列到倒数第二列的所有行
features = raw_data.iloc[:, 1:-1]
# 检查特征:共1433个特征,2708个样本点
# print(features.shape)  # (2708, 1433)

# 4.提取标签,进行独热编码
labels = pd.get_dummies(raw_data[1434])
# print(labels.head(3))  # 标签的前3行

# 5.导入论文引用数据
raw_data_cites = pd.read_csv('cora/cora.cites', sep='\t',
                             header=None)  # cora.cites共5429行, 每一行有两个论文编号,表示第一个编号的论文先写,第二个编号的论文引用第一个编号的论文。

# 6. 创建邻接矩阵
# 创建一个规模和邻接矩阵一样大小的矩阵
matrix = np.zeros((num, num))  # num = 2708 论文数
# 创建邻接矩阵
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))
print(matrix)  # 邻接矩阵

GCNcora数据集处理-数据集转邻接矩阵_第1张图片


你可能感兴趣的:(图神经网络,深度学习,python,numpy,卷积神经网络,图论)