SIR模型

# simulate the information diffusion under SI model
import networkx as nx
import numpy as np
import random
import matplotlib .pyplot as pltmax_iter_num = 25
g = nx.karate_club_graph()# init the graph with random edge weight and set the inactive status
for edge in g.edges:g.add_edge(edge[0], edge[1], weight=0.01)
for node in g:g.add_node(node, state = 0, weight = 0.1)seed = 33
g.nodes[seed]['state'] = 1all_active_nodes = []
all_active_nodes.append(seed)recover_influence_nodes = []for i in range(max_iter_num):new_active = list()tl = '%s time' % i + ' %s nodes' % len(all_active_nodes)print(tl)# infectionfor v in all_active_nodes:for nbr in g.neighbors(v):# print(nbr)if g.nodes[nbr]['state'] == 0:edge_data = g.get_edge_data(v, nbr)if random.uniform(0, 1) < edge_data['weight']:g.nodes[nbr]['state'] = 1new_active.append(nbr)all_active_nodes.extend(new_active)for v in all_active_nodes:# print(v)if random.uniform(0, 1) < g.nodes[v]['weight']:recover_influence_nodes.append(v)all_active_nodes.remove(v)print('all actived nodes: ', all_active_nodes)print('recover influence nodes: ', recover_influence_nodes)

结点亲密度karate

import networkx as nx
import numpy as np
filename = r"F:\PyCharm\PyCharmProjects\machine-learning\sns_datasets\karate\karate_edges.txt"n = 34
# 初值邻接矩阵
adjacencyMatrix = np.zeros((n, n))
# 亲密度矩阵
intimacy = np.zeros((n, n))
# 结点影响力矩阵
KI = np.zeros(n)
with open(filename) as f:for line in f.readlines():temp_list = line.split()adjacencyMatrix[int(temp_list[0]) - 1][int(temp_list[1]) - 1] = 1adjacencyMatrix[int(temp_list[1]) - 1][int(temp_list[0]) - 1] = 1if __name__ == '__main__':print(adjacencyMatrix)for i in range(len(adjacencyMatrix)):for j in range(len(adjacencyMatrix[0])):print(adjacencyMatrix[i][j], end=' ')print()# 定义一个数组,用来保存每个结点的邻居数neighborsNum = np.zeros(n)# 计算每个结点的邻居数for i in range(len(adjacencyMatrix)):size = 0for j in range(len(adjacencyMatrix[0])):if(adjacencyMatrix[i][j] == 1):size = size + 1neighborsNum[i] = sizeprint("打印每个结点的邻居数")for i in range(len(neighborsNum)):print(neighborsNum[i])# 计算每个结点与邻居结点的交集数量,用以计算初始化亲密度矩阵for i in range(len(adjacencyMatrix)):for j in range(len(adjacencyMatrix[0])):# 如果找到了邻居,那么就对比当前结点所在的行与邻居结点所在的行有多少交集commonNodes = 0if(adjacencyMatrix[i][j] == 1):for k in range(len(adjacencyMatrix[0])):if((adjacencyMatrix[i][k] == 1) and (adjacencyMatrix[i][k] == adjacencyMatrix[j][k])):commonNodes = commonNodes + 1# 求得共同邻居数之后,根据公式计算亲密度intimacy[i][j] = 1 + ((commonNodes)/(neighborsNum[i]+neighborsNum[j]-commonNodes-1))print("共同邻居数与亲密度为", i, j, commonNodes, intimacy[i][j],end=' ')print()# 计算结点的影响力for i in range(len(adjacencyMatrix)):# 定义间接影响力变量indirect = 0for j in range(len(adjacencyMatrix[0])):if(adjacencyMatrix[i][j] == 1):indirect = indirect + intimacy[i][j]*neighborsNum[j]KI[i] = neighborsNum[i] + indirectprint(i,"影响力的值为",KI[i])KI.sort()print(KI)

结点亲密度-USAir97

import networkx as nx
import numpy as np
filename = r"F:\PyCharm\PyCharmProjects\machine-learning\sns_datasets\USAir.txt"n = 334
# 初值邻接矩阵
adjacencyMatrix = np.zeros((n, n))
# 亲密度矩阵
intimacy = np.zeros((n, n))
# 结点影响力矩阵
KI = np.zeros(n)
with open(filename) as f:for line in f.readlines():temp_list = line.split()adjacencyMatrix[int(temp_list[0]) - 1][int(temp_list[1]) - 1] = 1adjacencyMatrix[int(temp_list[1]) - 1][int(temp_list[0]) - 1] = 1if __name__ == '__main__':print(adjacencyMatrix)for i in range(len(adjacencyMatrix)):for j in range(len(adjacencyMatrix[0])):print(adjacencyMatrix[i][j], end=' ')print()# 定义一个数组,用来保存每个结点的邻居数neighborsNum = np.zeros(n)# 计算每个结点的邻居数for i in range(len(adjacencyMatrix)):size = 0for j in range(len(adjacencyMatrix[0])):if(adjacencyMatrix[i][j] == 1):size = size + 1neighborsNum[i] = sizeprint("打印每个结点的邻居数")for i in range(len(neighborsNum)):print(neighborsNum[i])# 计算每个结点与邻居结点的交集数量,用以计算初始化亲密度矩阵for i in range(len(adjacencyMatrix)):for j in range(len(adjacencyMatrix[0])):commonNodes = 0;# 如果找到了邻居,那么就对比当前结点所在的行与邻居结点所在的行有多少交集if(adjacencyMatrix[i][j] == 1):for k in range(len(adjacencyMatrix[0])):if((adjacencyMatrix[i][k] == 1) and (adjacencyMatrix[i][k] == adjacencyMatrix[j][k])):commonNodes = commonNodes + 1# 求得共同邻居数之后,根据公式计算亲密度intimacy[i][j] = 1 + ((commonNodes)/(neighborsNum[i]+neighborsNum[j]-commonNodes-1))print("共同邻居数与亲密度为", i, j, commonNodes, intimacy[i][j],end=' ')print()# 计算结点的影响力for i in range(len(adjacencyMatrix)):# 定义间接影响力变量indirect = 0;for j in range(len(adjacencyMatrix[0])):if(adjacencyMatrix[i][j] == 1):indirect = indirect + intimacy[i][j]*neighborsNum[j]KI[i] = neighborsNum[i] + indirectprint(i,"结点的影响力",KI[i])

结点重要性与SIR模型基础代码相关推荐

  1. SIR传染模型Matlab代码,sir传染病模型 MATLAB代码运行不了,

    问题描述: sir传染病模型 MATLAB代码运行不了, function y=ill(t,x) a=1;b=0.3; y=[a*x(1)*x(2)-b*x(1),-a*x(1)*x(2)]'; ts ...

  2. python代码实现, SIR 模型进行信息传播模拟

    SIR模型是一种常用的信息传播模型,它用来模拟传染病(如冠状病毒)的流行情况.SIR模型包括三种状态: S(Susceptible):易感者,还没有患上传染病的人. I(Infected):感染者,已 ...

  3. 【数学建模】基于SIR模型实现新冠病毒COVID-19估计附matlab代码

    1 内容介绍 COVID-19是由严重急性呼吸综合症冠状病毒2型引发的传染病,它最初病毒携带者是一些动物,传染源主要是COVID-19患者,无症状患者.传播方式主要是呼吸道飞沫近距离传播,接触传播,还 ...

  4. R语言SIR模型(Susceptible Infected Recovered Model)代码sir模型实例

    最近我们被客户要求撰写关于SIR的研究报告,包括一些图形和统计输出. SIR模型定义 SIR模型是一种传播模型,是信息传播过程的抽象描述. SIR模型是传染病模型中最经典的模型,其中S表示易感者,I表 ...

  5. vecm模型怎么写系数_经典传染病的SIR模型(基于MATLAB)

    经典的SIR模型是一种发明于上个世纪早期的经典传染病模型,此模型能够较为粗略地展示出一种传染病的发病到结束的过程,其核心在于微分方程,本次我们利用matlab来对此方程进行 其中三个主要量 S是易感人 ...

  6. 零基础代码学python-零基础学Python 超详细教程

    01.第一章:Python介绍和安装 01.Python语言的特点 02.Python的发展历史与版本 03.Python的安装 02.第二章:Python基础语法 04.Python程序的书写规则 ...

  7. 模型开发-GBDT决策树模型开发代码

    GBDT(Gradient Boosting Decision Tree) 又叫 MART(Multiple Additive Regression Tree),是一种迭代的决策树算法,该算法由多棵决 ...

  8. word2vec原理(一): 词向量、CBOW与Skip-Gram模型基础

    word2vec原理(一): CBOW与Skip-Gram模型基础 word2vec原理(二):基于Hierarchical Softmax的模型 word2vec原理(三): 基于Negative ...

  9. 【阿里云课程】深度生成模型基础,自编码器与变分自编码器

    大家好,继续更新有三AI与阿里天池联合推出的深度学习系列课程,本次更新内容为第11课中两节,介绍如下: 第1节:生成模型基础 本次课程是阿里天池联合有三AI推出的深度学习系列课程第11期,深度生成模型 ...

最新文章

  1. Synergy 共享键盘和鼠标
  2. 为什么现有的工作制度 对 上班族不利
  3. 共享单车开启混战模式,谁能笑到最后?
  4. 对学校的希望和寄语_放飞青春梦,奋斗十四五——2020年福州文教职业中专学校寄宿生联欢晚会...
  5. WireSkark(六)
  6. python zip()函数的理解与应用
  7. IIS中“使用 XSL 样式表无法查看 XML 输入”问题的解决
  8. 使用Hexo搭建专属Blog
  9. 某学校有计算机主机1300台,网络互联技术与实践第14章:构建基于静态路由的多层网络.ppt...
  10. python多线程运用
  11. 语料库与python应用_语料库与Python应用/语料库翻译学文库
  12. Linux将文件复制粘贴到另外一个位置
  13. matlab 无刷电机,无刷直流电机的matlab仿真
  14. 10658830让你的手机会唱歌
  15. 同样是手写笔,Apple Pencil到底输在了哪里?
  16. Python爬虫入门教程 41-100 Fiddler+夜神模拟器+雷电模拟器配置手机APP爬虫部分
  17. 【最小栈c++】设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈
  18. [蓝桥杯][java]信用卡号验证问题
  19. 小程序开发工具绑定服务器,微信小程序绑定到第三方平台流程
  20. VC++ 绘制线条 OnLButtonDown函数(DrawView.cpp) 利用SDK全局函数实现画线功能 利用MFC的CDC类实现画线功能 利用MFC的CClientDC类实现画线功能

热门文章

  1. 疑似华为P30 Pro样张曝光:10倍变焦依然清晰
  2. 不服气不行,同样是码农,字节程序员的年薪居然达247万
  3. 螺旋千斤顶设计大作业_如何正确使用汽车千斤顶,新手司机看过来,老司机教你正确用法...
  4. c++11测试时间封装
  5. centos 修改密码_centos7忘记root密码怎么改
  6. php与drupal,php-将网站转换为Drupal-噩梦已经开始
  7. 【flink】Flink 中的木桶效应:单个 subtask 卡死导致整个任务卡死
  8. 【Elasticsearch】 es 索引 内置 字段 _source
  9. 【clickhouse】Error querying database. No buffer space available (maximum connections reached?): conne
  10. 10-11-010-简介-架构-架构简介