复杂网络分析之数据准备篇

简介:

关系图之原始数据

我给大家编了下面两组原始数据,试图画出abcd四元素之间的关系

nodes_data = [‘a’, ‘b’, ‘c’, ‘d’]

raw_data = [‘acW’, ‘aca’, ‘caE’, ‘ec’, ‘cd’, ‘dc’]

我们做关系网络前的最初始数据最好就是上面这样子,这种数据格式还是比较简单的。

nodes_data表示节点数据,用来在图中画节点

raw_data中含有共现的相互关系,但是需要进一步的清理规整。

关系图之数据格式

{source: {target: weight}}

source 起点

target 终点

weight权重(起点到终点次数)

nodes_data = [‘a’, ‘b’, ‘c’, ‘d’]

raw_data = [‘acW’, ‘aca’, ‘caE’, ‘ec’, ‘cd’, ‘dc’]

nodes_data和raw_data整理成有权有向数据格式如下:

{‘a’: {‘c’: 4},

‘c’: {‘a’: 4, ‘d’: 2},

‘d’: {‘c’: 2}}

上面的格式即可用来画有权有向图,也可用到无权无向图,还可画有权无向图、无权有向图。

所以数据保存,尽量保存为有权有权有向格式。尽可能保存多的信息,请用有权有向数据格式。

后面所有的关系图数据格式均以有权有向格式为基准。

如何实现有权有向数据格式

nodes_data = [‘a’, ‘b’, ‘c’, ‘d’]

raw_data = [‘acW’, ‘aca’, ‘caE’, ‘ec’, ‘cd’, ‘dc’]

||

|| ?

\/

{‘a’: {‘c’: 4},

‘c’: {‘a’: 4, ‘d’: 2},

‘d’: {‘c’: 2}}

这里很难,我估计我今天也说不太清除。这个只能希望大家悟性比我高,在就是运行下,编点简单的数据实验试验下,发现规律,也就懂了。

networkx需要的数据格式

有了上面富有信息量的有向有权格式数据还不行,我们要再将数据微调下,才能使用networkx库。

networkx需要啥数据格式?

data = {‘a’:{‘b’:1},

‘c’:{‘a’:2},

‘e’:{‘b’:3},

‘b’:{‘a’:4}}

nodes = {‘a’,’b’,’c’,’d’,’e’}

networkx节点

#首先导入库,解决中文显示问题


 
 
  1. import networkx as nx 
  2. import matplotlib.pyplot as plt 
  3. from pylab import mpl 
  4.  
  5. #解决显示中文问题 
  6. # 指定默认字体 
  7. mpl.rcParams['font.sans-serif'] = ['SimHei']    
  8.  
  9. # 解决保存图像是负号'-'显示为方块的问题 
  10. mpl.rcParams['axes.unicode_minus'] = False 

可见networkx创建节点需要的数据很简单,就是 字符串或者列表(集合也可以的) 。而且本身nodes数据就是列表,直接就能用到networkx构建节点中来。

但是networkx构建边时候,要用什么样式的呢?

networkx无向边

可见networkx 无向边 的构建只需要元组或列表数据,但是如何从 有权有向格式数据 转化为 元组 或者 列表(集合也可以的) 数据呢?

data = {‘a’:{‘b’:1},

‘c’:{‘a’:2},

‘e’:{‘b’:3},

‘b’:{‘a’:4}}

一、无权无向边

a->b 和b->a是一条边

data的边的集合是{(‘e’, ‘b’), (‘c’, ‘a’), (‘a’, ‘b’)}

生成无权无向边数据的代码:

二、 有权无向边

a->b和b->a使得 ab共出现5次。

有权无向边应为{(‘c’, ‘a’, 2), (‘a’, ‘b’, 5), (‘e’, ‘b’, 3)}

networkx有向边

可见networkx无向边的构建只需要元组或列表数据,但是如何从有权有向格式数据转化为元组或者列表(集合也可以的)数据呢?

data = {‘a’:{‘b’:1},

‘c’:{‘a’:2},

‘e’:{‘b’:3},

‘b’:{‘a’:4}}

一、无权有向边

a->b 和b->a是一条边

data的边的集合是{(‘a’, ‘b’), (‘b’, ‘a’), (‘c’, ‘a’), (‘e’, ‘b’)}

生成无权有向向边数据的代码:

二、有权有向边

[(‘a’, ‘b’, 1), (‘c’, ‘a’, 2), (‘e’, ‘b’, 3), (‘b’, ‘a’, 4)]

这样更好理解些


 
 
  1. weight = data.get(node_k).get(node_v) 

其实涉及到有权的边画图,比如让边显示粗细以表示权重大小。这个我还没有实现,主要是刚刚学networkx。不过今天这篇文章的探讨还是很有用的。可以将数据整理成其他绘图软件指定格式。绘制有权图。

写了这么多也不知道大家搞糊涂了没有,反正我写的有点晕!


本文作者:邓旭东HIT

来源:51CTO

相关文章
|
3月前
|
机器学习/深度学习 算法 调度
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
400 0
|
4月前
|
机器学习/深度学习 数据采集 传感器
【故障诊断】基于matlab BP神经网络电机数据特征提取与故障诊断研究(Matlab代码实现)
【故障诊断】基于matlab BP神经网络电机数据特征提取与故障诊断研究(Matlab代码实现)
169 0
|
5月前
|
数据采集 存储 算法
MyEMS 开源能源管理系统:基于 4G 无线传感网络的能源数据闭环管理方案
MyEMS 是开源能源管理领域的标杆解决方案,采用 Python、Django 与 React 技术栈,具备模块化架构与跨平台兼容性。系统涵盖能源数据治理、设备管理、工单流转与智能控制四大核心功能,结合高精度 4G 无线计量仪表,实现高效数据采集与边缘计算。方案部署灵活、安全性高,助力企业实现能源数字化与碳减排目标。
166 0
|
6月前
|
Python
LBA-ECO CD-32 通量塔网络数据汇编,巴西亚马逊:1999-2006,V2
该数据集汇集了1999年至2006年间巴西亚马逊地区九座观测塔的碳和能量通量、气象、辐射等多类数据,涵盖小时至月度时间步长。作为第二版汇编,数据经过协调与质量控制,扩展了第一版内容,并新增生态系统呼吸等相关计算数据,支持综合研究与模型合成。数据以36个制表符分隔文本文件形式提供,配套PDF说明文件,适用于生态与气候研究。引用来源为Restrepo-Coupe等人(2021)。
134 1
|
2月前
|
机器学习/深度学习 人工智能 算法
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
165 0
|
3月前
|
机器学习/深度学习 数据采集 运维
改进的遗传算法优化的BP神经网络用于电厂数据的异常检测和故障诊断
改进的遗传算法优化的BP神经网络用于电厂数据的异常检测和故障诊断
|
5月前
|
存储 监控 算法
基于 Python 跳表算法的局域网网络监控软件动态数据索引优化策略研究
局域网网络监控软件需高效处理终端行为数据,跳表作为一种基于概率平衡的动态数据结构,具备高效的插入、删除与查询性能(平均时间复杂度为O(log n)),适用于高频数据写入和随机查询场景。本文深入解析跳表原理,探讨其在局域网监控中的适配性,并提供基于Python的完整实现方案,优化终端会话管理,提升系统响应性能。
159 4
|
6月前
|
开发者
鸿蒙仓颉语言开发教程:网络请求和数据解析
本文介绍了在仓颉开发语言中实现网络请求的方法,以购物应用的分类列表为例,详细讲解了从权限配置、发起请求到数据解析的全过程。通过示例代码,帮助开发者快速掌握如何在网络请求中处理数据并展示到页面上,减少开发中的摸索成本。
鸿蒙仓颉语言开发教程:网络请求和数据解析
|
8月前
|
安全 网络安全 定位技术
网络通讯技术:HTTP POST协议用于发送本地压缩数据到服务器的方案。
总的来说,无论你是一名网络开发者,还是普通的IT工作人员,理解并掌握POST方法的运用是非常有价值的。它就像一艘快速,稳定,安全的大船,始终为我们在网络海洋中的冒险提供了可靠的支持。
270 22
|
8月前
|
存储 数据库 Python
利用Python获取网络数据的技巧
抓起你的Python魔杖,我们一起进入了网络之海,捕捉那些悠游在网络中的数据鱼,想一想不同的网络资源,是不是都像数不尽的海洋生物,我们要做的,就是像一个优秀的渔民一样,找到他们,把它们捕获,然后用他们制作出种种美味。 **1. 打开魔法之门:请求包** 要抓鱼,首先需要一个鱼网。在Python的世界里,我们就是通过所谓的“请求包”来发送“抓鱼”的请求。requests是Python中常用的发送HTTP请求的库,用它可以方便地与网络上的资源进行交互。所谓的GET,POST,DELETE,还有PUT,这些听起来像偶像歌曲一样的单词,其实就是我们鱼网的不同方式。 简单用法如下: ``` im
164 14