当前位置: 首页 > article >正文

别再只数连接数了!用Python的NetworkX库实战四大图中心性算法(附代码与可视化)

用Python实战四大图中心性算法从社交网络分析到关键节点挖掘当你面对一份社交网络数据时是否曾好奇过哪些用户才是真正的影响力中心传统方法可能只关注谁认识的人多但现实情况往往复杂得多。本文将带你用Python的NetworkX库通过四种不同的中心性算法从多个维度挖掘网络中的关键节点。1. 环境准备与数据加载在开始分析之前我们需要准备好Python环境和示例数据集。假设我们手头有一份社交网络数据记录了用户之间的关注关系。首先安装必要的库pip install networkx matplotlib pandas plotly让我们创建一个模拟的社交网络数据集。在实际工作中你可能会从CSV或数据库加载真实数据import pandas as pd import networkx as nx # 创建示例数据 - 用户关注关系 data { source: [Alice, Bob, Charlie, David, Eve, Frank, Grace, Heidi, Ivan, Judy], target: [Bob, Charlie, David, Alice, Frank, Grace, Heidi, Ivan, Judy, Alice] } df pd.DataFrame(data) G nx.from_pandas_edgelist(df, sourcesource, targettarget, create_usingnx.DiGraph())提示如果你的数据是无向关系如好友关系使用nx.Graph()代替nx.DiGraph()。2. 点度中心性谁的人脉最广点度中心性是最直观的衡量标准——统计每个节点连接的边数。在社交网络中这相当于计算每个人的直接联系人数量。degree_centrality nx.degree_centrality(G) # 转换为DataFrame便于查看 degree_df pd.DataFrame.from_dict(degree_centrality, orientindex, columns[Degree Centrality]) print(degree_df.sort_values(byDegree Centrality, ascendingFalse).head(5))结果可能显示节点点度中心性Alice0.222Bob0.111Charlie0.111David0.111Judy0.111点度中心性的业务应用场景识别社交网络中的活跃用户发现潜在的意见领袖寻找销售网络中的关键联系人3. 特征向量中心性认识重要的人让你更重要特征向量中心性认为认识重要的人比认识很多人更重要。它不仅考虑连接数量还考虑连接质量。eigenvector_centrality nx.eigenvector_centrality(G) # 可视化结果 import matplotlib.pyplot as plt pos nx.spring_layout(G) nx.draw(G, pos, with_labelsTrue, node_colorlist(eigenvector_centrality.values()), cmapplt.cm.Blues, node_size[v * 3000 for v in eigenvector_centrality.values()]) plt.show()特征向量中心性的特点递归计算你的重要性取决于你连接的人的重要性适用于影响力传播分析计算复杂度较高适合中小型网络4. 中介中心性网络中的桥梁人物中介中心性衡量一个节点作为桥梁的重要性即有多少最短路径经过该节点。betweenness_centrality nx.betweenness_centrality(G) # 使用Plotly交互式可视化 import plotly.graph_objects as go edge_x [] edge_y [] for edge in G.edges(): x0, y0 pos[edge[0]] x1, y1 pos[edge[1]] edge_x.extend([x0, x1, None]) edge_y.extend([y0, y1, None]) edge_trace go.Scatter( xedge_x, yedge_y, linedict(width0.5, color#888), hoverinfonone, modelines) node_x [] node_y [] for node in G.nodes(): x, y pos[node] node_x.append(x) node_y.append(y) node_trace go.Scatter( xnode_x, ynode_y, modemarkerstext, textlist(G.nodes()), textpositionbottom center, markerdict( showscaleTrue, colorscaleBlues, colorlist(betweenness_centrality.values()), size[v * 100 10 for v in betweenness_centrality.values()], colorbardict( thickness15, titleBetweenness Centrality, xanchorleft, titlesideright ) ) ) fig go.Figure(data[edge_trace, node_trace], layoutgo.Layout( titleNetwork Graph with Betweenness Centrality, showlegendFalse, hovermodeclosest, margindict(b20,l5,r5,t40), xaxisdict(showgridFalse, zerolineFalse, showticklabelsFalse), yaxisdict(showgridFalse, zerolineFalse, showticklabelsFalse)) ) fig.show()中介中心性的典型应用识别信息流动的关键控制点发现组织中的协调者角色定位基础设施网络中的脆弱节点5. 接近中心性网络中的信息集散中心接近中心性衡量一个节点到其他所有节点的平均距离反映信息传播的效率。closeness_centrality nx.closeness_centrality(G) # 合并所有中心性指标 centrality_df pd.DataFrame({ Degree: degree_centrality, Eigenvector: eigenvector_centrality, Betweenness: betweenness_centrality, Closeness: closeness_centrality }) # 标准化并计算综合评分 normalized_df centrality_df.apply(lambda x: (x - x.min()) / (x.max() - x.min())) normalized_df[Composite Score] normalized_df.mean(axis1) print(normalized_df.sort_values(byComposite Score, ascendingFalse).head(5))四种中心性指标对比指标类型衡量重点计算复杂度适用场景点度中心性直接连接数量低快速识别高连接度节点特征向量中心性连接质量高影响力传播分析中介中心性桥梁作用中关键路径识别接近中心性信息传播效率中信息集散中心定位6. 实战案例Twitter社交网络分析让我们将这些技术应用到一个更真实的场景中。假设我们有一份Twitter用户互动数据# 加载真实数据集示例 import networkx as nx from networkx.algorithms import centrality # 这里使用Karate Club数据集作为示例 G nx.karate_club_graph() # 计算所有中心性指标 metrics { Degree: centrality.degree_centrality(G), Eigenvector: centrality.eigenvector_centrality(G), Betweenness: centrality.betweenness_centrality(G), Closeness: centrality.closeness_centrality(G) } # 找出每种指标下的前3名节点 top_nodes {} for metric, values in metrics.items(): sorted_nodes sorted(values.items(), keylambda x: x[1], reverseTrue)[:3] top_nodes[metric] [node[0] for node in sorted_nodes] print(各指标下的关键节点:) for metric, nodes in top_nodes.items(): print(f{metric}: {nodes})分析结果解读点度中心性高的节点是网络中最活跃的用户特征向量中心性高的用户往往与其它重要用户有联系中介中心性高的用户连接了不同的社群接近中心性高的用户能够快速将信息传播到整个网络在实际项目中我发现结合多种中心性指标能够更全面地理解网络结构。例如在社区运营中点度中心性高的用户适合作为活动推广的初始传播者而中介中心性高的用户则适合作为不同群体间的协调者。

相关文章:

别再只数连接数了!用Python的NetworkX库实战四大图中心性算法(附代码与可视化)

用Python实战四大图中心性算法:从社交网络分析到关键节点挖掘 当你面对一份社交网络数据时,是否曾好奇过:哪些用户才是真正的影响力中心?传统方法可能只关注"谁认识的人多",但现实情况往往复杂得多。本文将带…...

别再只用`ifconfig`看网卡了!Linux下`rfkill`与`ip link`联用,精准控制WiFi开关状态

现代Linux无线网络管理:告别ifconfig的rfkill与ip命令深度指南 在Linux系统管理中,网络配置一直是核心技能之一。许多资深管理员至今仍习惯使用ifconfig这一经典工具,但很少有人意识到,这个源自BSD的工具早已被标记为"deprec…...

Camstar二次开发实战:用C#和ASP.NET定制你的第一个MES功能页面

Camstar二次开发实战:用C#和ASP.NET定制你的第一个MES功能页面 在制造业数字化转型浪潮中,MES(制造执行系统)作为连接ERP与车间设备的关键枢纽,其灵活性和可定制性直接决定了企业的敏捷响应能力。作为基于.NET技术栈的…...

终极指南:10分钟掌握FanControl,让你的电脑风扇智能又安静

终极指南:10分钟掌握FanControl,让你的电脑风扇智能又安静 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/Git…...

C/C++构建共享库时链接静态库报错:dangerous relocation: unsupported relocation 的根源与解决

1. 为什么会出现"dangerous relocation"错误? 当你尝试将一个静态库链接到共享库(动态库)时,如果遇到"dangerous relocation: unsupported relocation"这样的错误信息,这通常意味着你的静态库没有…...

别再死记硬背了!用Vue和React的实战代码,5分钟搞懂MVC和MVVM到底差在哪

从计数器到待办清单:用Vue和React代码拆解MVC与MVVM的本质差异 每次面试被问到"MVC和MVVM有什么区别"时,你是不是也条件反射般背诵那些概念定义?作为经历过数十次技术面试的老前端,我深刻理解这种抽象概念仅靠文字描述有…...

Unity WebGL性能优化与部署避坑指南

1. WebGL项目构建前的关键设置 第一次把Unity项目发布到WebGL平台时,我被浏览器控制台的各种报错狠狠教育了一顿。后来才发现,很多问题其实在Build Settings里就能提前规避。先说个最容易被忽视的——WebGL模板选择。Unity默认提供Default和Minimal两种模…...

OpenCV形态学操作进阶:手把手教你用getStructuringElement自定义核,玩转腐蚀膨胀

OpenCV形态学操作进阶:手把手教你用getStructuringElement自定义核,玩转腐蚀膨胀 在图像处理领域,形态学操作就像是一把精密的雕刻刀,能够帮助我们精确地塑造和优化图像特征。而getStructuringElement函数则是这把雕刻刀的核心调节…...

C/C++链接静态库报错:dangerous relocation: unsupported relocation(-fPIC)

1. 从报错信息看问题本质 第一次看到这个报错时,我也是一头雾水。屏幕上密密麻麻的"dangerous relocation: unsupported relocation"让人头皮发麻,特别是后面还跟着一堆看不懂的符号名称。但仔细分析后,我发现这个错误其实很有规律…...

【技术解析】局部残差相似度:一种提升图像检索精度的无监督重排序策略

1. 局部残差相似度(LRS)是什么? 当你用手机相册搜索"海边日落"时,系统如何在几万张照片中快速找到最匹配的结果?这背后就涉及到图像检索技术。而**局部残差相似度(LRS)**就像是一个智…...

保姆级教程:用Java搞定西门子S7-1200/1500 PLC数据读写(附完整代码)

工业级Java与西门子S7-1200/1500 PLC通信实战指南 在工业自动化领域,西门子S7系列PLC凭借其稳定性和高性能成为生产线控制的核心设备。当企业需要将生产数据整合到MES系统或工业物联网平台时,如何用Java高效稳定地读写PLC数据就成为关键问题。不同于传统…...

ECharts热力地图配色翻车?这份‘颜值即正义’的视觉映射(visualMap)调参指南请收好

ECharts热力地图视觉优化指南:从专业配色到极致体验 当你需要在汇报会议或公共大屏上展示数据时,一张配色糟糕的热力地图可能会让观众瞬间失去兴趣。我曾见过一个案例:某省级政务平台的数据大屏上,热力地图使用了高饱和度的红绿对…...

百度网盘SVIP破解:Mac版终极加速解决方案

百度网盘SVIP破解:Mac版终极加速解决方案 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘下载速度慢而烦恼吗?想…...

从Timed out到秒速开机:深入剖析systemd依赖链与设备等待超时

1. 当开机变成"慢动作":揪出systemd依赖链的元凶 那天早上我正喝着咖啡,突然收到监控系统报警——某台关键服务器启动耗时从15秒暴涨到90秒。登录系统后看到熟悉的Timed out waiting for device和Dependency failed报错,这场景就像…...

别再装第三方跑分了!Windows自带winsat命令,5分钟测完电脑真实性能

解锁Windows隐藏技能:用winsat命令5分钟完成专业级硬件体检 每次新电脑到手或是旧机变卡,你是不是也习惯性下载各种第三方跑分软件?鲁大师的分数排行榜、3DMark的酷炫测试场景确实吸引眼球,但这些软件背后暗藏的捆绑安装、隐私收集…...

从原理到实战:深入解析ESD测试标准与设备选型

1. ESD测试的核心原理与行业价值 静电放电(ESD)就像冬天脱毛衣时噼啪作响的小闪电,但它的破坏力远超你的想象。我曾在某智能手表项目中亲眼目睹:工程师只是随手拿起电路板,屏幕上立刻出现花屏——这就是人体静电导致的…...

从一次‘背锅’经历讲起:我是如何用VRRP+静态路由搞定小型企业网络冗余的

从一次‘背锅’经历讲起:我是如何用VRRP静态路由搞定小型企业网络冗余的 那是个周一的早晨,市场部的电话直接打爆了我的手机——CRM系统集体掉线,正在进行的客户演示被迫中断。当我气喘吁吁跑到机房时,老旧的边缘路由器指示灯正在…...

保护公司核心测试资产:CANoe CAPL脚本的3种加密方法与硬件绑定实战指南

保护公司核心测试资产:CANoe CAPL脚本的3种加密方法与硬件绑定实战指南 在汽车电子测试领域,CAPL脚本往往承载着企业多年积累的测试逻辑和专有技术。我曾亲眼见证一家供应商因测试脚本泄露导致竞品在三个月内复现其全部测试用例,直接造成数百…...

Barrier终极指南:一套键鼠控制Windows、macOS、Linux三系统,免费开源KVM软件让你效率翻倍![特殊字符]

Barrier终极指南:一套键鼠控制Windows、macOS、Linux三系统,免费开源KVM软件让你效率翻倍!🚀 【免费下载链接】barrier Open-source KVM software 项目地址: https://gitcode.com/gh_mirrors/ba/barrier 你是否曾在多台电脑…...

华硕枪神6/6plus G533Z G733Z 原厂Win11 21H2系统-宇程系统站

华硕枪神6/6plus G533Z G733Z系列笔记本电脑自带一键恢复功能,可在系统异常或更换硬盘后通过原厂工厂文件恢复出厂设置和隐藏的恢复分区。支持多种型号,如G533ZX, G533ZW等,确保用户轻松恢复至初始状态,享受流畅的Win11 21H2系统体…...

华硕枪神6/6Plus超竞版 G733C 原厂Win11 21H2系统-宇程系统站

华硕枪神6/6Plus超竞版G733C系列笔记本自带一键恢复功能,即使系统出现异常或用户自行重装、更换硬盘导致恢复功能失效,也能通过原厂工厂文件轻松恢复到出厂时的Windows 11 21H2专业版系统及隐藏恢复分区。支持型号包括G733CM, G733CW, G733CX。用户只需准…...

汇编语言从零到一:手把手构建你的第一个可执行程序

1. 环境搭建:从零开始配置汇编开发环境 第一次接触汇编语言的朋友可能会被各种陌生的工具和概念吓到,但其实搭建开发环境比你想象中简单得多。我刚开始学汇编时也走了不少弯路,今天就把最实用的配置方法分享给你。 必备工具三件套&#xff1a…...

Word长文档页码编排实战:封面、目录与正文的差异化页码设置指南

1. 为什么需要差异化页码设置 写论文、做报告的时候,最让人头疼的就是页码设置问题。封面不能有页码,目录要用罗马数字,正文又得用阿拉伯数字。这种需求在学术论文、商业报告中非常常见,但很多朋友第一次遇到时都会手忙脚乱。 我…...

Word文档分节与页码进阶:从封面、目录到正文的格式定制指南

1. 为什么需要分节设置页码? 第一次写毕业论文时,我也被页码设置折磨得够呛。封面莫名其妙出现了页码"1",目录页的罗马数字死活显示不出来,正文页码竟然从"3"开始计数。后来才发现,Word的页码逻辑…...

告别Keil+Proteus安装报错!手把手教你从零搭建51单片机仿真环境(附资源包)

从零搭建51单片机仿真环境:Keil与Proteus避坑指南 第一次接触51单片机开发时,最让人头疼的往往不是编程本身,而是环境搭建这个看似简单的第一步。许多初学者在安装Keil和Proteus时都会遇到各种"玄学"问题——芯片包安装后找不到、生…...

Zynq Linux系统下XVC服务器配置全记录:从设备树修改到xvcServer.c编译运行

Zynq Linux系统下XVC服务器深度配置指南:从设备树到服务部署 在嵌入式系统开发中,调试工具的灵活性和可靠性直接影响开发效率。XVC(Xilinx Virtual Cable)作为一种基于TCP/IP协议的远程调试方案,为Zynq平台开发者提供了…...

USB2.0信号测试避坑指南:为什么你的480Mbps总测不准?(附RIGOL探头选型表)

USB2.0信号测试避坑指南:为什么你的480Mbps总测不准? 在电子工程领域,USB2.0高速信号测试就像一场精密的外科手术——任何细微的操作失误都可能导致诊断结果失真。许多工程师在追求480Mbps理论速率时,常常陷入"数字达标但实际…...

从零到精飞:APM多旋翼核心参数调校实战指南

1. APM飞控入门:从组装到基础参数设置 第一次接触APM飞控的新手常会被密密麻麻的参数表吓到。我刚开始调试植保无人机时,光是理解PID三个字母就花了整整一周。其实只要掌握核心逻辑,调参就像给汽车做四轮定位——有标准流程可循。 多旋翼飞控…...

Rust 内存安全机制与数据竞争防护

Rust 内存安全机制与数据竞争防护 在软件开发中,内存安全和数据竞争是两大常见问题,它们可能导致程序崩溃、安全漏洞甚至数据损坏。传统语言如 C/C 依赖开发者手动管理内存,容易引发悬垂指针、缓冲区溢出等问题。而 Rust 通过独特的所有权系…...

房屋租赁管理|基于springboot + vue房屋租赁管理系统(源码+数据库+文档)

房屋租赁管理系统 目录 基于springboot vue房屋租赁管理系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取: 基于springboot vue房屋租赁管理系统 一、前言 博主介绍&am…...