1 创建网络

1.1 创建一个图(Graph)

四种类型:无向图、有向图、多层无向图、多层有向图

// 共有四种类型
import networkx as nx
G = nx.Graph()
G = nx.DiGraph()
G = nx.MultiGraph()
G = nx.MultiDiGraph()

1.2 创建图的节点(Node)

任何类型都可以成为一个节点,一个数字 、一个字符、甚至一个带参数的函数

// 方法一
G.add_node(1)#节点是数字
G.add_node('CHINA')#节点是字符
def ff(a,b):c=(a+b)*(a-b)return c
G.add_node(ff(5,3))#节点是函数,会增加一个节点标签为16的节点
// 方法二:从一个列表中获取节点
G.add_nodes_from([10,20,30,40,50])
// 方法三:从一个列表中获取,但是列表中包含描述节点属性的字典
G.add_nodes_from([('CHINA',{"color":"blue"}),('USA',{"color":"blue"}),('UK',{"color":"blue"})])

1.3 创建图的边(Edge)

//方法一
G.add_edge('My','name', weight=4.7 )
//方法二
G.add_edges_from([('is', '5'), ('6', '7')], color='red')
//方法三
G.add_edges_from([('Meihua', '13', {'color': 'blue'}), (2, 3, {'weight': 8})])>>>print(G['My']['name']['weight']))
>>>4.7#可计算得出该条边的权重为4.7

1.4 其他方法

// 其他常用的网络操作方法
Graph.__init__([incoming_graph_data])
Graph.remove_node(n)
Graph.remove_node(nodes)
Graph.add_weighted_edges_from(ebunch_to_add)
Graph.remove_edge(u,v)
Graph.remove_edges_from(ebunch)
Graph.update([edges,nodes])
Graph.clear()
Graph.clear_edge()

1.5 网络数据集

Stanford大学大规模网络数据集:http://snap.stanford.edu/data/

2 网络指标-节点属性

2.1 度-Degree


解释:这里的节点“5”为什么度值为2,是因为这里“5”这里是是一个起点和终点都为“5”的边,因为重合所以就没有边就没有绘制出来,但是边和度值却依旧存在。

// 计算每个节点的度
Nodes_list=[]#一个装有节点的列表
D=[]
for i in range(len(Nodes_list)):d=G.degree(Nodes_list[i])#临时变量D.append(d)#一个装有度的列表

2.2 度中心性-Degree Centrality

Degree Centrality,in case of weighted and directed network in a graph, an actor’s degree is defined by the number of another actors that directly connected to him as in-degree, vice versa out-degree. Node size that formed by actor depends on the metric. The most influence actor can be generated from the biggest value in-degree centrality . Where d[i] is the degree (number of adjacent edges) of node v[i].

// 计算度中心性,返回一个列表
nx.degree_centrality(G)

2.3 平均路径长度

// 计算网络的平均路径长度,返回一个数值
nx.average_shortest_path_length(G)

2.4 簇系数-Cluster

// 计算网络的簇系数,返回一个列表
clu=nx.clustering(G)

网络的簇系数:取值范围为[0,1]
相邻节点也相邻的数目/该节点所有边的数目,比如节点2的簇系数=1和3的形成的一条边/节点2所有相邻的边=1/3=0.333;单一一个节点的簇系数为零;
下图简易网络的簇系数计算结果为{1: 1.0, 2: 0.333, 3: 1.0, 4: 0, 5: 0, ‘x’: 0}

2.5 接近中心性-Closeness Centrality

紧密度(Closeness)可用来度量网络中的节点通过网络对其他节点施加影响的能力。节点的紧密度越大,表明该节点越居于网络的中心,在网络中越重要。
Clossness Centrality directly relates to the geodesic distance (or the cardinality of the shortest path) between two actors. It has a reflection of the whole connectivity in the network structure. Where d(i,j) defines the distance between two actors i and j, n is number of nodes/actor.

// 计算节点的接近中心性,返回一个列表
clo_cen=nx.closeness_centrality(G)

2.6 中介中心性-Betweenness Centrality

中介中心性(Betweenness Centrality)以经过某个节点的最短路径来刻画节点重要性的指标。该指标用于衡量个体社会地位。
Betweenness centrality depicts the position of an actor in between, so he can control other two actors, which do not have direct connectivity between them. This metric is important in global centrality measure, which investigates the strength of connectivity between the actors in the network. Where ,pjk is the number of geodesic paths between two actors j and k, and pjk(i) is the number of geo desic paths between j and k that contains actor i.

// 网络的介数中心性,返回一个列表
bet_cen=nx.betweenness_centrality(G)

2.7 特征向量-Eigenvector

特征向量(Eigenvector)一个节点的重要性既取决于邻居节点的数量,也取决于邻居节点的重要性。度指标把周围邻居视为同等重要, 这些邻居的重要性是不一样的,考虑到节点邻居的重要性对给节点的重要性有一定影响。如果邻居节点在网络上中很重要,则这个节点的重要性可能很高;如果邻居节点的重要性很低,即使邻居节点的邻居很多,则该节点不一定很重要。通常称这种情况为邻居节点的重要性反馈。特征向量指标是网络邻接矩阵对应的最大特征是的特征向量。

// 计算每一个节点的特征向量中心性,返回一个列表
eig_cen=nx.eigenvector_centrality_numpy(G)
指标名称 概念
点中心度 在某个点上,有多少线。某点单独的价值
接近中心度 该点与网络中其他点距离之和的倒数,越大说明越在中心,越能够很快到达其他节点。强调点在网络的价值,越大,越在中心。体现用户的价值
中介中心度 代表最短距离是否都经过该点,如果都经过说明这个点很重要,其中包括线的中心度。强调点在其他点之间调节能力,控制能力指数,中介调节效应。体现用户的控制力
特征向量中心度 根据相邻点的重要性来衡量该点的价值,首先计算邻接矩阵,然后计算邻接矩阵的特征向量。强调点在网络的价值,并且与接近中心度不同的在于,点价值是根据邻居节点来决定的。体现节点的潜在价值

2.6 小世界效应“Small world”

复杂网络的小世界效应是指尽管网络的规模很大(网络节点数目N很大),但是两个节点之间的距离比我们想象的要小得多。也就是网络的平均路径长度L随网络的规模呈对数增长,即L~In N。大量的实证研究表明,真实网络几乎都具有小世界效应。最出名就是社会学中的“六度分形理论”。

2.7 无标度特性

无标度特性反映了复杂网络具有严重的异质性,其各节点之间的连接状况(度数)具有严重的不均匀分布性:网络中少数称之为Hub点的节点拥有极其多的连接,而大多数节点只有很少量的连接。

【编程实践】复杂网络的基本知识及实现相关推荐

  1. java并发编程实践(1)intro

    [0]README 0.1)本文部分文字描述转自"java并发编程实践",旨在学习"java并发编程实践(1)intro"的相关知识: [3]线程带来的风险 [ ...

  2. 《Java并发编程实践》学习笔记之一:基础知识

    <Java并发编程实践>学习笔记之一:基础知识 1.程序与进程 1.1 程序与进程的概念 (1)程序:一组有序的静态指令,是一种静态概念:  (2)进程:是一种活动,它是由一个动作序列组成 ...

  3. 【网络编程实践--陈硕】学习笔记 | 汇总目录

    本文参考<网络编程实践>–陈硕(Muduo作者)视频课程所写.基于课程内容所做归纳和整理. <网络编程实战>配套页面:http://chenshuo.com/pnp Blog ...

  4. linux网络编程(一)网络基础传输知识

    linux网络编程(一)网络传输基础知识 一.什么是协议? 二.使用步骤 典型协议 2.网络应用程序设计模式 C/S模式 B/S模式 优缺点 3.分层模型 4.TCP/IP四层模型 通信过程 5.协议 ...

  5. Java 3D编程实践_Java 3D编程实践——网络上的三维动画[学习笔记]

    评论 # re: Java 3D编程实践--网络上的三维动画[学习笔记] 2006-08-24 23:41 gy # re: Java 3D编程实践--网络上的三维动画[学习笔记] 2007-03-2 ...

  6. python网络编程需要学什么,python网络编程学习笔记(五):socket的一些补充 Python 网络编程需要学习哪些网络相关的知识...

    python的socket编程问题hdr = recvall(s, 5) if hdr is None: print 'Unexpected EOF receivingstruct在unpack的时候 ...

  7. 《9.linux网络编程实践》

    转自 https://edu.csdn.net/lecturer/505 朱老师物联网大讲堂 <9.linux网络编程实践> 第一部分.章节目录 3.9.1.linux网络编程框架 3.9 ...

  8. Windows核心编程 第六章 线程基础知识 (上)

    第6章 线程的基础知识 理解线程是非常关键的,因为每个进程至少需要一个线程.本章将更加详细地介绍线程的知识.尤其是要讲述进程与线程之间存在多大的差别,它们各自具有什么作用.还要介绍系统如何使用线程内核 ...

  9. python网络编程视频教程_Java网络开发视频教程 – 一站式学习Java网络编程视频教程 全面理解BIO(无密)...

    Java网络开发视频教程 – 一站式学习Java网络编程视频教程 全面理解BIO(无密) 全面理解BIO/NIO/AIO 网络层编程,是每一个开发者都要面对的技术.课程为解决大家学习网络层知识的难题, ...

  10. java并发编程实践(2)线程安全性

    [0]README 0.0)本文部分文字描述转自:"java并发编程实战", 旨在学习"java并发编程实践(2)线程安全性" 的相关知识: 0.1)几个术语( ...

最新文章

  1. 修改Ubuntu的启动logo
  2. 【Math】P=NP问题
  3. 全球及中国无菌粉末注射用橡胶塞行业运营模式分析及产销需求预测报告2021年版
  4. Git在服务器安装完成后续工作
  5. 【CUDA开发】CUDA面内存拷贝用法总结
  6. 站点CSS样式不起作用,或仅仅有一部分起作用?随手记
  7. 程序员如何跟领导提离职_员工辞职不交接工作被领导怒怼:我不批离职,跟你耗着,结果蒙了...
  8. leetcode 6 --- convertZ
  9. 如何禁用特定css_通过CSS追踪用户
  10. 基于JAVA+SpringMVC+Mybatis+MYSQL的校园帮管理系统
  11. SQL Server数据库快照
  12. 使用 ADSync 集成 IBM Lotus Domino Directory 和 Microsoft Active Directory
  13. 静态页面 调用php数据,静态html页面如何更新点击数
  14. java 子串替换_Java中的多个同时子串替换
  15. 开源免费制造业erp erp5的优点分析
  16. 201671010415+词频统计软件项目报告
  17. rust服务器显示长度,rust服务器设置倍率
  18. CSDN 社区大趴-北京站 圆满结束
  19. 什么叫幂等?如何实现幂等性?
  20. 永信至诚:乌镇世界互联网大会闭幕 网络安全人的使命刚刚启航

热门文章

  1. 霍尼韦尔摄像头ip地址修改_Honeywell 安防系统使用手册(IP-ALARM-II).pdf
  2. 网络正常,QQ无法登录,一直显示登录中
  3. matlab 计算相关系数,如何用Matlab计算相关系数和偏相关系数
  4. Adobe Bridge 2020新增功能
  5. 思科 计算机网络 期末考试答案
  6. codesmith oracle 64,CodeSmith OracleModel写法
  7. java jconsole 远程连接_jconsole连接远程tomcat
  8. 台电tbook10s官方固件_【11月1日】台电官方系统固件更新
  9. java 酒店系统_Java实现酒店客房管理系统
  10. 联想黑苹果找不到触摸板_联想s410笔记本安装黑苹果10.11.6成功,功能基本都实现,分享给群里的兄弟们!!!...