资源简介
本资源针对一种边权重存在重尾分布复杂网络,改进原本的SIR模型对TopK重要节点进行性能评估。并将传播过程绘制成可视化图。本资源使用networkx工具包。
代码片段和文件信息
import networkx as nx
import numpy as np
import os.path as osp
import matplotlib.pyplot as plt
import random
def spread_model_smooth(DGtopkmax_iter_numinfect_rate=0.8remove_rate=0.2):
CG = DG.to_directed()
#max_weight = max([e[2][‘weight‘] for e in CG.edges(data=True)])
N = CG.number_of_nodes()
node_state={node:0 for node in CG}
nx.set_node_attributes(CG node_state “state“)#为节点添加属性
for n in topk:
CG.node[n][‘state‘] = 1
random.seed(150)
for e in CG.edges():
if(CG[e[0]][e[1]][‘weight‘]==1):
CG[e[0]][e[1]][‘prob‘] = random.uniform(01)
else:
CG[e[0]][e[1]][‘prob‘] = 1
all_infect_nodes = []#累计受感染节点
all_infect_nodes.extend(topk)
all_count_infect = [len(all_infect_nodes)]#记录每一次受感染的节点总数
infected_digraph = nx.DiGraph()
infected_digraph.add_nodes_from(topktime=0)
all_remove_nodes = []#累计治愈节点
all_count_remove = [0]#记录每一次免疫的总数
count_iter_infect = [len(topk)]#记录每次新增的感染节点数量
count_iter_remove = [0]#记录每次新增的免疫节点数量
all_count_suscep = [N-len(topk)]#记录每次易感染节点数量
for i in range(max_iter_num):
new_infect = []
new_remove = []
#t1 = ‘%s time‘ % i + ‘ %s nodes‘ % len(all_infect_nodes)
#print(t1) # 当前有多少个节点被感染
for v in all_infect_nodes:
if (i!=0 and random.uniform(01) CG.remove_node(v)#该节点具有免疫能力,不再传播,应该从原始图中去除
#all_infect_nodes.remove(v)#治愈之后,将不会出现该节点,节点失效
#infected_di
相关资源
- 二级考试python试题12套(包括选择题和
- pywin32_python3.6_64位
- python+ selenium教程
- PycURL(Windows7/Win32)Python2.7安装包 P
- 英文原版-Scientific Computing with Python
- 7.图像风格迁移 基于深度学习 pyt
- 基于Python的学生管理系统
- A Byte of Python(简明Python教程)(第
- Python实例174946
- Python 人脸识别
- Python 人事管理系统
- 基于python-flask的个人博客系统
- 计算机视觉应用开发流程
- python 调用sftp断点续传文件
- python socket游戏
- 基于Python爬虫爬取天气预报信息
- python函数编程和讲解
- Python开发的个人博客
- 基于python的三层神经网络模型搭建
- python实现自动操作windows应用
- python人脸识别(opencv)
- python 绘图(方形、线条、圆形)
- python疫情卡UN管控
- python 连连看小游戏源码
- 基于PyQt5的视频播放器设计
- 一个简单的python爬虫
- csv文件行列转换python实现代码
- Python操作Mysql教程手册
- Python Machine Learning Case Studies
- python获取硬件信息
评论
共有 条评论