使用不同方法读取不同网络数据集
在加载网络数据集的时候需要对指定的数据集进行读取,然后对读取的数据集进行后续处理,但是复杂网络数据集的存储格式有很多种,导致每次找数据集都要在网上查询如何进行读取,所以对一些常见的数据集类型的读取进行一些记录,方便自己之后的查询以及使用。
使用pandas对txt和csv文件进行读取
导入pandas包,使用pandas中的read_csv方法,如果是txt文件且以空格或者分隔符分开可以在sep参数设置需要拆分的符号。
pd.read_csv(data_path, sep=' ')
如果第一行不是列名可以使用header=None将取消将第一行作为表头
pd.read_csv(data_path, sep=' ', header=None)
设置自己的列名,使用name
pd.read_csv(data_path, sep=' ', name=['source', 'target'])
自己制作的网络数据集ID转换问题
自己制作的数据集的节点ID会非常长不利于接下来的我们分析,所以我们对每个ID进行一个映射,做成字典的形式存储下来,然后对数据集进行修改。
首先对存储的dict进行加载
load_dict = np.load('my_dict.npy', allow_pickle=True).item()
然后对我们的每一列进行字典的对应转换
df['source'] = df['source'].map(load_dict)
df['target'] = df['target'].map(load_dict)
或者使用replace方法
df.replace({"source": my_dict})
df.replace({"target": my_dict})
转换pandas数据转化为tensor
有时我们处理信息的一些包需要以tensor格式进行节点信息的输入,所以要把每一列的元素以tensor的格式输出。使用torch.from_numpy(),或者先把pandas变为numpy的格式在进行tensor的转换。
// 使用切片得到第一列(source)节点数据
torch.from_numpy((df.values)[:, 0])
//先转为np格式再转为tensor
my_array = np.array(df)
my_tensor = torch.tensor(my_array)