当前位置: 首页 > news >正文

搜索网站定制公司做视频网站的条件

搜索网站定制公司,做视频网站的条件,网站设计要点,淄博好的建网站公司目录 一、SIR模型介绍 二、Python实现SIR模型 1.制作自己的数据集的两种方法#xff08;csv格式#xff09; #xff08;1#xff09;excel转为csv格式 #xff08;2#xff09;通过python对csv格式文件进行内容修改 2.导入数据集 #xff08;1#xff09;具体代码如下… 目录 一、SIR模型介绍 二、Python实现SIR模型 1.制作自己的数据集的两种方法csv格式 1excel转为csv格式 2通过python对csv格式文件进行内容修改 2.导入数据集 1具体代码如下所示 2点数据集与连边数据集展示 3变量格式展示  3.制定初始网络  1具体代码如下 2重要变量内容格式展示如下  4. 定义网络节点状态更新规则 1具体更新思想 2代码呈现如下 5.模拟执行过程并展示结果图 2结果图展示部分代码 3部分变量内容展示 4结果图展示  三通过python制作散点图 1.代码部分  2.散点图呈现 一、SIR模型介绍 经典SIR模型是一种传染病模型此模型能够简单地展现出一种传染病从出现到扩散再到最后逐渐被消灭的过程。该模型假设总节点数保持不变且每个个体存在于三种可能的人群状态之中分别为S代表易感人群I代表感染人群R代表恢复人群假定恢复人群不会再次被感染。 三类人群状态之间的转换规则如图1所示 SIR模型中除了上述三种人群状态外还设定了两个常值分别为感染概率a和恢复概率b。每个时间单位每个状态为易感人群S的节点若和系统网络中的感染人群I中的节点存在连接则有a的概率受到感染人群I影响被感染转换状态成为感染人群I中的节点。而感染人群I中的节点在每个单位时间下则有b的概率转换自身状态成为恢复人群R中的节点。 S(t)I(t)R(t)分别代表了当前时间点下易感人群S总人数感染人群I总人数及恢复人群R总人数。通过不同人群的占比我们可以得到当前时刻感染状态的人群所占总人群的比例从而了解当前传染病的蔓延程度如何。 二、Python实现SIR模型 1.制作自己的数据集的两种方法csv格式 1excel转为csv格式 将所需数据按列输入excel中 输入完毕后另存为csv格式进行保存格式选择如下 保存完后的csv格式文件在程序中内容如下所示 2通过python对csv格式文件进行内容修改 具体内容代码参考下方博客即可写的很详细 通过python编写csv格式文件的四种类型 2.导入数据集 1具体代码如下所示 import pandas import csv import randomnode_df pandas.read_csv(E:/data/节点.csv) all_nodes_list node_df.values.tolist() #获取文件中所有节点edge [] #获取所有边 with open(E:/data/边.csv,r,encodingutf-8-sig) as f: data f.readlines() for line in data: line list(line.replace(\r,).replace(\n,).replace(\t,).split(,))# 去除“”和换行符将data列表中的元素转换为列表single_edge tuple([line[0],line[1]])edge.append(single_edge) 为了更加直观理解每个变量内容针对如下点与边的csv文件内容展示部分变量 2点数据集与连边数据集展示 3变量格式展示 node_dfall_nodes_listdata格式如下 line每一轮从列表data中获取一个元素以第一轮为例刚获取时格式如下 通过执行 line list(line.replace(\r,).replace(\n,).replace(\t,).split(,)) 将其中的逗号与换行符去除并转换为列表此时格式如下 通过执行 single_edge tuple([line[0],line[1]]) 提取line列表中的元素并以元组形式储存于single_edge 中此时格式如下 每个轮次将得到的single_edge内容存储于edge中最终当所有轮次执行完后edge内容如下 3.制定初始网络 1具体代码如下 参数初始化设置 days 50 # 设置模拟的天数 alpha 0.2 # 感染率 beta 0.10 # 恢复率# 设置不同人群的显示颜色易感者为橘色感染者为红色恢复者为绿色 color_dict {S: orange, I: red, R: green} 节点状态初始化设置 import networkx as nx ba nx.Graph() # 引入一个类 ba.add_edges_from(edge) # 将上一步的edge导入这个类中 for node in ba.nodes(): # 将每个人的初始状态设为“S”ba.nodes[node][state] S # 随机选取一个节点为初始感染者此处设定为老张 ba.nodes[老张][state] I 2重要变量内容格式展示如下 仅使用了ba类中的 adj 与 nodes部分每个人的adj中存储了与其有连接的人即邻居nodes中存储了每个人当前状态。 特别注意类中数据类型为dict字典的数据部分设定完成后无法更改。 4. 定义网络节点状态更新规则 1具体更新思想 先考虑单个节点的更新 我们使用一个简单的函数来实现一个节点的状态的更新。 首先如果一个节点是恢复者那么下一步还是恢复者其节点状态保持不变。 如果一个节点是感染者那么其恢复的概率是 β。用程序实现的方法为先均匀生成一个0到1的随机数 p如果 p β则节点恢复否则节点依然处于感染状态。 如一个节点是易感者先要去其邻居节点中看看一共有多少个邻居是感染者有 k 个邻居是感染者那么当前节点被感染的概率是 1 - (1 - α)k。我们生成一个0到1的随机数 p如果 p 1 - (1 - α)k则节点被感染否则不被感染。 2代码呈现如下 对单个节点更新部分的代码 import random# 根据 SIR 模型更新单一节点的状态 def updateNodeState(G,node, alpha, beta):if G.nodes[node][state] I: #感染者p random.random() # 生成一个0到1的随机数if p beta: # gamma的概率恢复G.nodes[node][state] R #将节点状态设置成“R”elif G.nodes[node][state] S: #易感者p random.random() # 生成一个0到1的随机数k 0 # 计算邻居中的感染者数量for neibor in G.adj[node]: # 查看所有邻居状态遍历邻居用 G.adj[node]if G.nodes[neibor][state] I: #如果这个邻居是感染者则k加1k k 1if p 1 - (1 - alpha)**k: # 易感者被感染G.nodes[node][state] I 通过遍历循环实现对所有节点的状态更新 def updateNetworkState(G, alpha, beta): # 需要对应的ba感染率恢复率for node in G: #遍历图中节点每一个节点状态进行更新updateNodeState(G,node, alpha, beta) # 需要对应的ba当前节点感染率恢复率 在每个时间单位下当遍历更新完所有人当前状态后用函数countSIR对3类人群的数量进行统计。 # 计算三类人群的数量 def countSIR(G):S 0;I 0for node in G:if G.nodes[node][state] S:S S 1elif G.nodes[node][state] I:I I 1return S,I, len(G.nodes) - S - I 5.模拟执行过程并展示结果图 1执行部分代码展示 在图中开始SIR模型的模拟设置模拟天数开始执行模拟过程 import time SIR_list [] for t in range(0,days):updateNetworkState(ba,alpha,beta) #对网络状态进行模拟更新SIR_list.append(list(countSIR(ba))) #计算更新后三种节点的数量 2结果图展示部分代码 模型结果可视化 # 模拟天数为days更新节点状态 import matplotlib.pyplot as pltdf pandas.DataFrame(SIR_list,columns[S,I,R]) df.plot(figsize(9,6),color[color_dict.get(x) for x in df.columns]) plt.show() 3部分变量内容展示 将每一天的3类人群数量转换为一个列表将每一天的列表放入SIR_list 中最终 SIR_list 内容如下所示 通过执行df pandas.DataFrame(SIR_list,columns[S,I,R])df内容如下所示 通过执行df.plot(figsize(9,6),color[color_dict.get(x) for x in df.columns]) 将3类人群曲线得到不同颜色。 4结果图展示 三通过python制作散点图 在上述用python实现SIR模型的基础上增添了散点图的呈现方式更好地呈现了个体与个体之间的联系。 1.代码部分 psnx.spring_layout(ba) #针对上述SIR模型中的ba类布置框架 nx.draw(ba,ps,with_labelsFalse,node_size30) # with_labels指是否给每个点设定标签由于数据集中个体为人的名字中文无法直接作为标签故而设定为不需要 plt.show() 2.散点图呈现
http://www.w-s-a.com/news/646143/

相关文章:

  • 网络优化软件下载竞价排名和seo的区别
  • 龙华新区做网站中高端网站建设
  • 网站开发小图标大全手机网站设计开发
  • 网页设计设计一个网站口碑营销的优点
  • 枣庄建网站的公司唐山企业网络推广培训
  • 张家界建设企业网站学校资源网站建设方案
  • 网站制作教程书籍业务管理系统
  • 上传网站空间的建站程序怎么删除c 网站开发案例详解下载
  • 企业网站维护兼职丹阳网站优化
  • 秦皇岛网站开发公司怎么注册自己的公司
  • 写作网站哪个能得稿费绿色环保企业网站模板
  • 牡丹江网站建设定制开发安徽建设工程信息网官网入口
  • 有什么好的网站建设的书适合在家做的网站工作
  • wordpress情侣源码西安网站快速优化
  • 昆明网站建设高端定制100种班服设计图
  • 网站开发程序说明html网页制作接单
  • 企业网站货物查询怎么做制作文件的软件
  • 怎么做网站的防盗链北京门户企业网站建设
  • 网站推广的主流方法淘客网站 源码
  • 网站海外推广怎么做多用户商城系统源码教程
  • 猎头做单网站网站创建费用
  • 住房和城乡建设网站 上海自己做网站还是公众号
  • 投票网站怎么制作电商网站模板html
  • 攀枝花移动网站建设抖音广告投放平台
  • 什么是网站设计第一装修网
  • 公司网站建设一条织梦门户网站源码
  • 网站改版中su域名注册
  • 做网站有没有前途济南产品网站建设外包
  • 网站备案咨询做静态网站多少钱
  • 软件开发和网站建设一样吗太原今天最新通知