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

简介:

关系图之原始数据

我给大家编了下面两组原始数据,试图画出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

相关文章
|
算法 关系型数据库 测试技术
基于PgRouting的GIS网络分析--数据准备
一 前言 PgRouting是基于开源空间数据库PostGIS用于网络分析的扩展模块,最初它被称作pgDijkstra,因为它只是利用Dijkstra算法实现最短路径搜索,之后慢慢添加了其他的路径分析算法,如A算法,双向A算法,Dijkstra算法,双向Dijkstra算法,tsp货郎担算法等,然后被更名为pgRouting[1]。
2276 0
|
3天前
|
安全 网络安全 数据安全/隐私保护
数字堡垒之下:网络安全漏洞与信息安全的守护之路
在数字化浪潮中,网络安全成为保护个人隐私和企业数据的关键防线。本文将探讨网络漏洞的发现与利用,加密技术在信息保护中的作用,以及提升安全意识的重要性。我们将从基础概念出发,通过案例分析,深入了解网络攻防的动态平衡,并分享实用的安全策略,旨在为读者提供一条清晰的信息安全守护路径。
11 2
|
2天前
|
安全 算法 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
【9月更文挑战第8天】本文将探讨网络安全与信息安全的重要性,以及如何保护个人和组织的信息资产。我们将讨论网络安全漏洞、加密技术、安全意识等方面的内容,并提供一些实用的建议和技巧来帮助读者提高他们的网络安全水平。无论你是个人用户还是企业管理员,都可以从本文中获得有关如何保护自己免受网络威胁的有用信息。
179 89
|
2天前
|
存储 监控 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
【9月更文挑战第9天】在数字化时代,网络安全和信息安全已成为我们生活的重要组成部分。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的知识和技巧来保护您的个人信息和数据安全。我们将通过深入浅出的方式,帮助您了解网络威胁的来源,如何利用加密技术保护自己的数据,以及如何提高自己的安全意识。无论您是个人用户还是企业,这些知识都将对您有所帮助。让我们一起来学习如何保护自己的网络安全吧!
|
2天前
|
安全 网络协议 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
【9月更文挑战第9天】在数字时代,网络安全和信息安全成为了全球关注的焦点。本文将深入探讨网络安全漏洞、加密技术以及安全意识等方面的内容,帮助读者更好地了解这些概念,并提高自身的网络安全意识和技能。
|
1天前
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
【9月更文挑战第9天】随着互联网的普及,网络安全问题日益严重。本文将介绍网络安全漏洞、加密技术以及安全意识等方面的内容,帮助读者了解网络安全的重要性,并提供一些实用的技巧和建议。
23 12
|
2天前
|
安全 网络安全 数据安全/隐私保护
数字堡垒之下:网络安全与信息安全的现代博弈
在数字化时代的浪潮中,网络空间已成为新的战场。本文以通俗易懂的语言,探讨了网络安全漏洞、加密技术的重要性以及提升个人和组织安全意识的必要性。通过深入浅出的分析,旨在启发读者思考如何在日益复杂的网络环境中保护自己的数字身份和资产。正如甘地所言,“你必须成为你希望在世界上看到的改变”,在网络安全的世界里,我们每个人都是守护者,也是变革者。
|
2天前
|
SQL 安全 算法
数字堡垒之下:网络安全与信息安全的现代挑战
在数字化时代的波澜壮阔中,网络安全与信息安全成为我们不得不直面的严峻话题。本文将带您一探究竟,从网络漏洞的暗流涌动到加密技术的坚固盾牌,再到提升个人与企业的安全意识,我们将深入浅出地探讨这些概念并分享实用的知识。让我们一同筑起数字世界的安全防线,保护数据不受侵犯,维护网络空间的和平稳定。
|
2天前
|
存储 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
【9月更文挑战第9天】随着互联网的普及,网络安全问题日益突出。本文将介绍网络安全的基本概念、常见漏洞及其防范措施,探讨加密技术在保护信息安全中的作用,并强调提升个人安全意识的重要性。通过本文,读者将了解到如何识别和应对网络威胁,以及如何利用加密技术和提高安全意识来保护自己的信息资产。
|
2天前
|
安全 算法 网络协议
网络安全与信息安全:保护你的数字生活
在数字化时代,网络安全和信息安全已经成为我们生活中不可或缺的一部分。本文将深入探讨网络安全漏洞、加密技术以及安全意识等方面的问题,以期帮助读者更好地保护自己的数字生活。无论你是网络新手还是资深用户,这篇文章都将为你提供有价值的信息和建议。