Node2Vec实战---《悲惨世界》人物图嵌入

news2024/11/24 20:57:05

1. pip各个包后导入

import networkx as nx # 图数据挖掘
import numpy as np # 数据分析
import random # 随机数

# 数据可视化
import matplotlib.pyplot as plt
%matplotlib inline
plt.rcParams['font.sans-serif']=['SimHei']  # 用来正常显示中文标签  
plt.rcParams['axes.unicode_minus']=False  # 用来正常显示负号

 

2. 导入内置的数据集

# 《悲惨世界》人物数据集
G = nx.les_miserables_graph()

3. 可视化图,with_labels=True,以此给每个节点的名称显示出来

# 可视化
plt.figure(figsize=(15,14))
pos = nx.spring_layout(G, seed=5)
nx.draw(G, pos, with_labels=True) # 给每个节点的名称显示出来
plt.show()

4. 接下来导入Node2Vec模型,并设置其模型参数,并将最终得到的各个节点的嵌入向量embedding赋予给变量X

from node2vec import Node2Vec

# 设置node2vec参数
node2vec = Node2Vec(G, 
                    dimensions=32,  # 嵌入维度
                    p=1,            # 回家参数
                    q=3,          # 外出参数
                    walk_length=10, # 随机游走最大长度
                    num_walks=600,  # 每个节点作为起始节点生成的随机游走个数
                    workers=4       # 并行线程数
                   )

# p=1, q=0.5, n_clusters=6。DFS深度优先搜索,挖掘同质社群
# p=1, q=2, n_clusters=3。BFS宽度优先搜索,挖掘节点的结构功能。

# 训练Node2Vec,参数文档见 gensim.models.Word2Vec
model = node2vec.fit(window=3,    # Skip-Gram窗口大小
                     min_count=1,  # 忽略出现次数低于此阈值的节点(词)
                     batch_words=4 # 每个线程处理的数据量
                    )

X = model.wv.vectors # 77个节点的嵌入向量

 

5. 接下来用Kmeans聚类算法,进行节点Embedding聚类可视化

#DBSCAN聚类
# from sklearn.cluster import DBSCAN
# cluster_labels = DBSCAN(eps=0.5,min samples=6).fit(X).labels
# print(cluster labels)

# KMeans聚类
from sklearn.cluster import KMeans
cluster_labels = KMeans(n_clusters=3).fit(X).labels_ # 对X进行聚类,聚成三簇,
print(cluster_labels) # 得到聚类的label

print(cluster_labels)的结果:

将词汇表的节点顺序转为networkx中的节点顺序。

colors = []
nodes = list(G.nodes)
for node in nodes: # 按 networkx 的顺序遍历每个节点
    idx = model.wv.key_to_index[str(node)] # 获取这个节点在 embedding 中的索引号
    colors.append(cluster_labels[idx]) # 获取这个节点的聚类结果

把colors放到原图中可视化,可视化聚类效果如下:

plt.figure(figsize=(15,14))
pos = nx.spring_layout(G, seed=10)
nx.draw(G, pos, node_color=colors, with_labels=True)
plt.show()

上图的效果其实很像原论文里所谓DFS的效果,也就是挖掘同质社群,我觉得更通俗一点,就是相邻的节点其实就是一类。

 6. 将Embedding用PCA降维到2维,进行节点embedding降维可视化

# 将Embedding用PCA降维到2维
from sklearn.decomposition import PCA
pca = PCA(n_components=2)
embed_2d = pca.fit_transform(X)

# # 将Embedding用TSNE降维到2维
# from sklearn.manifold import TSNE
# tsne = TSNE(n_components=2, n_iter=5000)
# embed_2d = tsne.fit_transform(X)

# plt.figure(figsize=(14,14))
plt.scatter(embed_2d[:, 0], embed_2d[:, 1]) # 绘制散点图
plt.show()

7. 找到和拿破仑相似的节点

8. 对edge连接进行embedding

from node2vec.edges import HadamardEmbedder # 导入工具包

# Hadamard 二元操作符:两个 Embedding 对应元素相乘
edges_embs = HadamardEmbedder(keyed_vectors=model.wv)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1033879.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ArtifactResolveException

bug描述 Caused by: org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration$ArtifactResolveException: Could not resolve all files for configuration :app:debugCompileClasspath. 产生原因 一般可能是更换了新AndroidStudio导致的。依赖库未能成功…

关于Safari浏览器报错:Failed to load resource: 发生SSL错误,无法建立到该服务器的安全连接

报错信息: Failed to load resource: 发生SSL错误,无法建立到该服务器的安全连接 XMLHttpRequest cannot load https://xxxxxxx due to access control checks. 具体如图下: 原因是:页面上的http请求变了https请求 解决办法…

【校招VIP】产品思维创意之活动推广

考点介绍: 对于活动新手来说,策划出一个活动创意不是难事。但是如何把做活动考虑周详,理清运营活动的思路和流程,避免重复工作却是需要沉淀的。运营活动有一个很重要的思路方法,就是倒推。九维这次来和你们讲述倒推的思…

day31多线程01

1.实现多线程 1.1简单了解多线程【理解】 是指从软件或者硬件上实现多个线程并发执行的技术。 具有多线程能力的计算机因有硬件支持而能够在同一时间执行多个线程,提升性能。 1.2并发和并行【理解】 并行:在同一时刻,有多个指令在多个CPU上…

大模型时代,探人工智能发展的新动向

导语 | 今年以来大模型的热度居高不下,人工智能成为国内外各大厂商争相布局的新赛道。那么近期 AI 领域有哪些值得关注的新趋势,它又将为软件开发带来哪些影响呢?今天,我们特邀了微智云科技 CEO、腾讯云 TVP 张虎老师,…

HR人才测评,什么是领导力?如何测评人的领导能力?

什么是领导力? 领导力指的是带领和组织团队,充分利用各种条件和资源,为团队目标而努力。具有卓越领导力的人,即使是在困难的条件下,也能充分利用条件,激励成员,提高团队的效率,朝着…

数据备份文件生成--根据表名生成对应的sql语句文件

最近客户有个需求,希望在后台增加手动备份功能,将数据导出下载保存。 当然,此方法不适用于海量数据的备份,这只适用于少量数据的sql备份。 这是我生成的sql文件,以及sql文件里的insert语句,已亲测&#x…

Software Grand Exposure: SGX Cache Attacks Are Practical【WOOT‘17】

目录 摘要引言我们的目标和贡献贡献新颖的SGX缓存攻击技术非加密应用程序泄漏对策分析 背景Intel SGX缓存结构性能监视计数器 系统和威胁模型对手的能力进攻目标 攻击设计PrimeProbePrimeProbe for SGX挑战 作者:Ferdinand Brasser, Urs M ̈uller, Alexandra Dmitr…

2023 第十二届中国智能产业高峰论坛 - 文档大模型的未来展望

目录 前言文档图像分析识别与理解中的技术挑战 文档图像分析识别与理解的研究主题文档图像分析与预处理文档解析与识别版面分析与还原文档信息抽取与理解AI安全知识化&存储检索和管理 多模态大模型在文档图像处理中的应用多模态的GPT-4在文档图像上的表现多模态的Google Ba…

Spring Security :二【原理解析、会话管理、RBAC中集成认证和授权、JWT】

文章目录 三、原理解析3.1 结构分析3.1 登录认证流程分析3.1.1 **UserDetailsService**3.1.2 自定义UserDetailsService3.1.3 **PasswordEncoder** 3.2 授权流程分析3.2.1 配置方式的原理解析3.2.2 注解方式原理解析 四、会话管理4.1 获取用户身份4.2 会话控制 五、 RBAC中集成…

swoole开发功能的消息队列与异步通信实现原理

随着互联网技术的迅猛发展,开发者对于高性能和高并发的需求也变得越来越迫切。作为一款开发框架,Swoole因其卓越的性能和丰富的功能而受到越来越多开发者的青睐。本文将介绍Swoole中消息队列和异步通信的实现原理,并结合代码示例进行详细说明…

远程桌面软件是否支持远程访问远程网络监控系统

远程桌面软件是一种通过网络连接,实现远程访问和控制计算机桌面的工具。它允许用户在自己的设备上操作远程计算机,就像直接坐在那台计算机前一样。然而,这种软件能否支持远程访问远程网络监控系统,取决于具体的软件以及目标网络监…

在React中,什么是组件的生命周期?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 挂载阶段(Mounting)⭐ 更新阶段(Updating)⭐ 卸载阶段(Unmounting)⭐ 错误处理阶段(Error Handling)⭐ 新的生命周期方法⭐ 写在最后 ⭐ 专栏…

初识Java 10-2 集合

目录 LinkedList Stack Queue Set Map 新特性:记录(record)类型 本笔记参考自: 《On Java 中文版》 LinkedList LinkedList同样实现了基本的List接口。相比于ArrayList,LinkedList拥有更快的插入和删除效率&…

华为云云耀云服务器L实例评测|Docker版的Minio安装 Springboot项目中的使用 结合vue进行图片的存取

前言 最近华为云云耀云服务器L实例上新,也搞了一台来玩,期间遇到过MySQL数据库被攻击的情况,Redis被攻击的情况,教训是密码不能太简单。在使用服务器时,学习到很多运维相关的知识。 本篇博客介绍如何在Linux中安装mi…

【数据结构】—交换排序之快速排序究极详解,手把手带你从简单的冒泡排序升级到排序的难点{快速排序}(含C语言实现)

食用指南:本文在有C基础的情况下食用更佳 🔥这就不得不推荐此专栏了:C语言 ♈️今日夜电波:靴の花火—ヨルシカ 0:28━━━━━━️💟──────── 5:03 …

搜款网VVIC根据ID取商品详情 API 关键词搜索商品列表

搜款网是一家服装批发平台,提供多个品牌和供应商的服装、鞋子、箱包等商品供采购者选择,为了获取商品详情,您需要使用搜款网的API接口。 建议您联系搜款网的客服或开发者,以获取更多关于API接口的信息,包括使用方法、…

5+氧化应激+预后模型

今天给同学们分享一篇氧化应激预后模型的生信文章“A four oxidative stress gene prognostic model and integrated immunity-analysis in pancreatic adenocarcinoma”,这篇文章于2023年1月13日发表在Front Oncol期刊上,影响因子为5.738。 胰腺腺癌&am…

macOS Sonoma 14 RC2(23A344)/Ventura13.6/Monterey 12.7 三版系统同时更新

macOS Sonoma 14 RC2(23A344)/macOS13.6/macOS 12.7 同时更新

[论文阅读]YOLOV1:You Only Look Once:Unified, Real-Time Object Detection

摘要 我们提出了YOLO,一种新的目标检测方法。之前的目标检测工作重新使用分类器来执行检测。相反,我们将目标检测表述为空间分离的边界框和相关类概率的回归问题。单个神经网络在一次评估中直接从完整图像中预测边界框和类别概率。由于整个检测管道是一…