DeepWalk & Node2Vec

DeepWalk & Node2Vec

维基百科词条DeepWalk图嵌入

import networkx as nx
import pandas as pd
import numpy as np
import random
from tqdm import tqdm
import matplotlib.pyplot as plt
%matplotlib inline

plt.rcParams["font.sans-serif"]=["SimHei"]
plt.rcParams["axes.unicode_minus"]=False
df = pd.read_csv("seealsology-data.tsv", sep="\t")

构建无向图

节点过多,省去可视化

生成随机游走序列

训练word2vec模型

分析word2vec结果

PCA降维可视化

可视化全部词条的二维embedding

可视化某个词条的二维embedding

可视化某些词条的二维embedding

TSNE降维可视化

可视化全部词条的二维embedding

导出TSNE降维到二维之后的embedding

可视化全部词条的三维enmbedding

导出TSNE降维到三维之后的embedding

<悲惨世界>人物关系-Node2Vec图嵌入

导入数据集

G = nx.les_miserables_graph
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DeepWalkNode2vec都是用于图嵌入的算法,能够将图中的节点映射到低维向量空间中,从而使得节点之间的相似度可以通过向量之间的距离来度量。它们的不同之处在于节点的采样策略不同。 DeepWalk使用随机游走的方法,将节点序列作为句子来看待,并使用Word2vec模型来学习节点的向量表示。具体来说,DeepWalk首先随机选择一个起始节点,然后从该节点开始执行随机游走,每次随机选择一个邻居节点进行移动,直到游走到预设的长度为止。将得到的节点序列作为句子输入到Word2vec模型中,进行词向量的学习。最终,每个节点都可以表示成一个向量。 Node2vec也是基于随机游走的方法,但是与DeepWalk不同的是,Node2vec使用了一个类似于BFS的策略,即在随机游走时,不仅考虑到邻居节点,还考虑到之前访问过的节点。具体来说,Node2vec有两个参数:p和q,p控制回退到前一个节点的概率,q控制跳到下一个节点的概率。这两个参数的不同取值可以让Node2vec在保留社区结构的同时,也能够探索图中其他部分。与DeepWalk类似,Node2vec也将节点序列作为句子输入到Word2vec模型中进行学习。 举个例子,如果我们有一个社交网络图,其中每个节点表示一个人,每个边表示两个人之间的关系。我们可以使用DeepWalkNode2vec来学习每个人的向量表示,从而可以计算两个人之间的相似度。比如,我们可以使用这些向量来推荐好友,找到与自己兴趣相似的人等等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值