GCN cora-network可视化
GCN cora-network可视化一、源码下载Github下载地址:https://github.com/tkipf/gcn您可以在以下模型之间进行选择:gcn:图卷积网络gcn_cheby:图卷积网络的Chebyshev多项式版本dense:支持稀疏输入的基本多层感知器框架还支持对每个具有邻接矩阵的多个图实例(可能具有不同的大小)进行批量分类。最好将各个特征矩阵连接起来,并建立一个(稀疏的)
GCN cora-network可视化
一、源码下载
Github下载地址:https://github.com/tkipf/gcn
您可以在以下模型之间进行选择:
gcn
:图卷积网络gcn_cheby
:图卷积网络的Chebyshev多项式版本dense
:支持稀疏输入的基本多层感知器
框架还支持对每个具有邻接矩阵的多个图实例(可能具有不同的大小)进行批量分类。最好将各个特征矩阵连接起来,并建立一个(稀疏的)块对角矩阵,其中每个块对应一个图实例的邻接矩阵。对于池化(对于图级输出而不是节点级输出),最好指定一个简单的池化矩阵,该矩阵从各自的图实例中收集要素,如下所示:
[
安装源码所需要的包,执行train.py文件
利用GCN完成节点分类任务的模型训练
二、节点分类可视化
进一步,利用 tsne 对 gcn 的 outputs 进行可视化,观测是否能分成明显的7簇?
需要注意的是,要修改源代码,以将网络中节点的embedding 和 label输出出来。
-
步骤一:修改 utils.py 的load_data()函数,将变量labels返回
return adj, features, y_train, y_val, y_test, train_mask, val_mask, test_mask, labels
-
步骤二:修改 train.py 文件。首先修改输出out
outs = sess.run([model.opt_op, model.loss, model.accuracy, model.outputs], feed_dict=feed_dict)
然后在训练完后添加如下代码段
label_dict = {0:"0",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6"} # 定义标签颜色字典
# 写文件
with open("./embeddings.txt", "w") as fe, open("./labels.txt", 'w') as fl:
for i in range(len(outs[3])):
fl.write(label_dict[int(list(labels[i]).index(1.))]+"\n")
fe.write(" ".join(map(str, outs[3][i]))+"\n")
三、代码可视化
将分类后的结果在二维坐标上显示,所以我们要针对这个7个特征的数据进行PCA降维操作。
但是可视化效果不如参考的这篇博客的。
import matplotlib.pyplot as plt #加载matplotlib用于数据的可视化
from sklearn.decomposition import PCA #加载PCA算法包
x, y= [], []
with open("labels.txt", "r") as f: # 打开文件
data1 = f.read().split("\n") # 读取文件
for i in data1:
y.append(int(i))
with open("embeddings.txt", "r") as f: # 打开文件
data1 = f.read().split("\n") # 读取文件
for item in data1:
a = []
item1 = item.split(" ")
for i in item1:
a.append(float(i))
x.append(a)
pca=PCA(n_components=2) #加载PCA算法,设置降维后主成分数目为2
reduced_x=pca.fit_transform(x)#对样本进行降维
print(reduced_x)
# #可视化
color = ['#F0F8FF', 'green', 'b', 'r', '#7FFFD4', '#FFC0CB', '#00022e']
for index, item in enumerate(reduced_x):
plt.scatter(item[0], item[1], c= color[y[index]])
plt.show()
参考博客: https://www.jianshu.com/p/47425c02d779
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)