精华内容
下载资源
问答
  • SI模型,影响力传播模型,传染病模型,信息传播模型python代码 SI模型,影响力传播模型,传染病模型,信息传播模型python代码 SI模型,影响力传播模型,传染病模型,信息传播模型python代码 SI模型,影响力传播模型...
  • 网民创造发布信息并通过传播渠道,将信息传播给需要的网民。这是互联网大多数企业正在做或准备做的事情,我们就从发布、信息、渠道、接收这几个环节来做一些解释。 发布内容多样化,拉近现实社会与互联网的距离,...
    网民创造发布信息并通过传播渠道,将信息传播给需要的网民。这是互联网大多数企业正在做或准备做的事情,我们就从发布、信息、渠道、接收这几个环节来做一些解释。 发布内容多样化,拉近现实社会与互联网的距离,发布方式的扩展,通过手机、手表、眼镜、家用电器等,现实社会与互联网进一步融合客户端是除了硬件作为现实社会进入互联网另一入口。

      对信息的理解,需要立体性的思维。多样性,我们迷失在信息海洋中。多义性,同样的信息不同的人、不同的时间、地点、情境、语境其意义都有很大的差异。产权,网民可以通过信息的产权获得实质性利益。如何解决信息多样性和多义性是考量传播渠道效率的主要指标,是传播渠道的核心竞争力。同时解决这两个问题一般是平台要做的事情,一般是从信息的多义性出发,对信息根据特定的情境进行分发。

      陌生交友,根据地点、关键词等将用户信息进行分发,彼此对用户信息此时的涵义心照不宣,虽然这些用户信息在正常时间里看起来没有什么不同。LBS是根据地点,对信息进行分发,在不同的行业对LBS信息进行分发,其涵义与商业价值同样会发生变化,当然分发的方式可以通过下面的广播、关系链、搜索引擎渠道,这样就会又有不同的产品类型出现。

      广播式传播的主要特征是单向,其他的特征都可从这一点推导而出,单向传播,受众没有话语权只能被动接收信息,处于弱势地位,发布者和受众的地位是不对等的,传播的内容途径范围等都在发布者的可控范围内,无需顾忌受众感受的传播,粗暴直接高效。广播式传播的特征也让大数据有了想象空间,对受众的数据分析,进行范围控制,对受众的数据分析,对信息内容进行控制,以及时间地点等诸多因素,利用大数据对广播式传播手段的升级,来提升传播效率。大数据在一定程度上有积极作用,但在我看来更多可能是个大陷阱。

      关系链传播的主要特征是网络,网络有众多的节点构成,每个节点生而平等,平等权的落实,是节点的自主权,节点能够自由组织或解散,形成具有主题性的子网络。节点需要与其他节点沟通,具有天然的社交属性,社交沟通具有时效性,导致参与事件的人越多,事件的时效性越强。关系链传播是重点也是难点尤其是其解决信息多样性和多义性的机制不是一两句说的清的,有兴趣可以去翻我的博客。

      搜索引擎的主要特征是精准,根据索引对历史数据进行快速定位,帮助网民高效找到所需的信息。索引也是对信息多义性的一个有效策略。搜索引擎的高效定位功能成为信息传播过程中重要的辅助功能,不可或缺,但舞台主角已是关系链传播毋庸置疑。

        微信作为微博的功能互补,在微博进化速度缓慢时,快速的单点突破,结合移动互联网O2O的大背景,获得自己的空间,打个漂亮的时间差,至于这样的优势能有多大,能保持多久,则有待双方各自的进化发展等待最终的竞争结果。本文转自站帮网 SEO教程,如需转载请注明地址:http://www.zhanhelp.com/thread-268046-1-1.html?_dsign=41f16fbf
    展开全文
  • 考虑到发布信息用户的可信度差异对信息传播过程具有一定的影响,针对真假信息传播的广度和效果,提出了一个新的IBU模型,研究了信息内容真实性以及发布信息用户的可信度对信息传播动力学过程的影响。通过MATLAB仿真...
  • SIR信息传播模型

    千次阅读 2020-06-12 17:22:41
    SIR模型是传染病模型中的经典模型,可以用在传染病过程中的模拟预测,也可以用作抽象表达社交网络中的信息传播过程,本文讲述的是后者。 SIR模型将社交网络中的节点分为三类:S类,易感染者,指未接收信息且不具备...

    SIR模型及python复现

    SIR模型

    SIR模型是传染病模型中的经典模型,可以用在传染病过程中的模拟预测,也可以用作抽象表达社交网络中的信息传播过程,本文讲述的是后者。
    SIR模型将社交网络中的节点分为三类: S S S类,易感染者,指未接收信息且不具备传播能力的节点; I I I类,感染者,指接收信息且具备传播能力的节点; R R R类,免疫者,指接收信息后退出传播过程的节点。
    SIR模型的传播机制如下图所示:

    其中, β β β代表感染率,即时刻 t t t 时单位时间内 I I I类节点新增的感染个体与 S S S类节点个数成比例,比例系数为 β β β γ γ γ代表免疫率(恢复率),即时刻 t t t 时单位时间内 R R R类节点新增的免疫个体与 R R R类节点个数成比例,比例系数为 γ γ γ

    SIR数学模型

    传播动力学方程

    我们将上述传播模型表达为动力学方程。这里设置节点总数为 N N N,其他三类节点初始数目分别为 S 、 I 、 R S、I、R SIR N = S + I + R N=S+I+R N=S+I+R。则有下列方程
    { d S d t = − β S I N , d I d t = β S I N − γ I , d R d t = γ I \begin{cases} \quad \dfrac{dS}{dt}=-βS\dfrac{I}{N},\\ \quad \dfrac{dI}{dt}=βS\dfrac{I}{N}-γI,\\ \quad \dfrac{dR}{dt}=γI \end{cases} dtdS=βSNI,dtdI=βSNIγI,dtdR=γI
    其中, I N \dfrac{I}{N} NI代表 S S S类与 I I I类的接触率。

    python实现

    from scipy.integrate import odeint
    import numpy as np
    import matplotlib.pyplot as plt
    
    
    def sir_model(input_v, t):
        s, i, r = input_v
        n = s + i + r
        ds_dt = - beta * s * (i / n)
        di_dt = beta * s * (i / n) - gamma * i
        dr_dt = gamma * i
        return [ds_dt, di_dt, dr_dt]
    
    
    if __name__ == '__main__':
        # 模型输入值
        N = 10000  # 设定总节点数量
        S0 = 9980  # S类节点数量
        I0 = 18  # I类节点数量
        R0 = N - S0 - I0  # R类节点数量
        input_value = (S0, I0, R0)
        beta = 0.5  # 设定感染率
        gamma = 0.1  # 设定免疫率
        # 设定步长 即传播次数
        times = np.linspace(0, 60, 60)
        # 求解微分方程
        result = odeint(sir_model, input_value, t=times)
        # 画图
        plt.plot(result[:, 0], '-ro', label='S')
        plt.plot(result[:, 1], '-b^', label='I')
        plt.plot(result[:, 2], '-gs', label='R')
        plt.legend(loc=0)
        plt.xlabel('times')
        plt.ylabel('number')
        plt.show()
    

    实现结果如下图所示。

    模拟社交网络中SIR模型的信息传播过程

    在这里由于没有数据集,所以只能用python中的Networkx库,这里我们使用BA无标度网络模型(个人认为比较接近于现实社交网络)。

    import networkx as nx
    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    import matplotlib.animation as animation
    import random
    # 确保 中文 和 -
    plt.rcParams['font.sans-serif'] = ['SimHei']
    plt.rcParams['axes.unicode_minus'] = False
    
    
    def update_node_status(G, node, beta, gamma):
        """
        更改节点状态
        :param G: 输入图
        :param node: 节点序数
        :param beta: 感染率
        :param gamma: 免疫率
        """
        # 如果当前节点状态为 感染者(I) 有概率gamma变为 免疫者(R)
        if G.nodes[node]['status'] == 'I':
            p = random.random()
            if p < gamma:
                G.nodes[node]['status'] = 'R'
        # 如果当前节点状态为 易感染者(S) 有概率beta变为 感染者(I)
        if G.nodes[node]['status'] == 'S':
            for adj_node in G[node]:
                if G.nodes[adj_node]['status'] == 'I':
                    p = random.random()
                    if p < beta:
                        G.nodes[node]['status'] = 'I'
                        break
    
    
    def update_network_data(G, beta, gamma):
        """
        更改图数据
        :param G: 输入图
        :param beta: 感染率
        :param gamma: 免疫率
        """
        for node in G:
            update_node_status(G, node, beta, gamma)
    
    
    def initial_network_data(G, i_num, r_num):
        """
        初始化图数据
        :param G: 输入图
        :param i_num: 感染者数量
        :param r_num: 免疫者数量
        """
        # 感染节点集
        i_set = set(random.sample(G.nodes, i_num))
        # 免疫节点集
        r_set = set(random.sample(G.nodes, r_num))
        # 两个集合不能重复
        while r_set & i_set:
            r_set = set(random.sample(G.nodes, r_num))
        # 初始化节点状态
        for node in G:
            if node in i_set:
                G.nodes[node]['status'] = 'I'
            elif node in r_set:
                G.nodes[node]['status'] = 'R'
            else:
                G.nodes[node]['status'] = 'S'
    
    
    def count_node(G):
        """
        计算当前图内各个节点的数目
        :param G: 输入图
        :return: 各个节点数目
        """
        s_num, i_num, r_num = 0, 0, 0
        for node in G:
            if G.nodes[node]['status'] == 'S':
                s_num += 1
            elif G.nodes[node]['status'] == 'I':
                i_num += 1
            else:
                r_num += 1
        return s_num, i_num, r_num
    
    
    def draw_network(G):
        """
        输出初始网络节点分布
        :param G: 输入图
        """
        # 设置图大小
        fig, ax = plt.subplots(figsize=(12, 8))
        ax.set_title("易感染者-感染者-免疫者节点初始分布")
        pos = nx.spring_layout(G, scale=1)
        nx.draw(G, pos=pos, with_labels=True, font_color='white', edge_color='grey',
                node_color=[color_dict[ba.nodes[node]['status']] for node in G])
    
    
    def draw_node_trend(G, beta, gamma):
        """
        输出各类节点趋势
        :param G: 输入图
        :param beta: 感染率
        :param gamma: 免疫率
        """
        # 设定传播步长
        t_list = np.linspace(1, 24, 24)
        # 开始模拟传播
        for t in range(len(t_list)):
            # 计算并存储当前各个节点数目
            node_list.append(count_node(G))
            update_network_data(G, beta, gamma)
        # 整理数据
        df = pd.DataFrame(data=node_list, index=t_list, columns=['S', 'I', 'R'])
        # 显示数据曲线
        df.plot(figsize=(8, 6), color=[color_dict.get(x) for x in df.columns])
        plt.ylabel('nodes(节点数)')
        plt.xlabel('days(天数)')
        plt.title('易感染者-感染者-免疫者节点趋势')
        plt.savefig('SIR_model')
        plt.show()
    
    
    def update_graph(i, G, ax, pos, beta, gamma):
        """
        动态更新节点
        :param i: 输入帧
        :param ax: 输入图参数
        :param G: 输入图
        :param beta: 感染率
        :param gamma: 免疫率
        """
        i = int(i)
        ax.set_title("第" + str(i + 1) + "天 易感染者-感染者-免疫者节点分布")
        ax.axis('off')
        plt.box(False)
        if i == 1:
            # 第一天  初始节点分布  直接画出
            nx.draw(G, with_labels=True, font_color='white', edge_color='grey',
                    node_color=[color_dict[ba.nodes[node]['status']] for node in G], pos=pos)
        else:
            # 以后变化 需要演变节点
            update_network_data(G, beta, gamma)
            nx.draw_networkx_nodes(G, with_labels=True, font_color='white', edge_color='grey',
                                   node_color=[color_dict[ba.nodes[node]['status']] for node in G], pos=pos)
    
    
    def draw_network_trend(G, beta, gamma, days):
        """
        输出网络动态变化视频
        :param G: 输入图
        :param beta: 感染率
        :param gamma: 免疫率
        :param days: 需要的时间(迭代次数)
        """
        fig, ax = plt.subplots(figsize=(12, 8))
        pos = nx.spring_layout(G, scale=1)
        ani = animation.FuncAnimation(fig, update_graph, frames=days,
                                      fargs=(G, ax, pos, beta, gamma), interval=300)
        writer = animation.FFMpegWriter()
        ani.save('network_trend.mp4', writer=writer)
    
    
    if __name__ == '__main__':
        # 总人数
        N = 10000
        # 易感染者人数
        s = 9980
        # 感染者人数
        i = 18
        # 免疫者人数
        r = N - s - i
        # 各个节点数目列表
        node_list = []
        # 节点颜色
        color_dict = {'S': 'blue', 'I': 'red', 'R': 'green'}
        # 创建BA无标度网络
        ba = nx.barabasi_albert_graph(N, 3, seed=1)
        # 初始化网络节点
        initial_network_data(ba, i, r)
        # 输出节点趋势图
        draw_node_trend(ba, 0.4, 0.1)
        # 初始节点分布图
        # 输出初始节点网络图
        # draw_network(ba)
        # 输出网络动态变化图
        # draw_network_trend(ba, 0.2, 0.15, 50)
    

    上述代码得到的结果如下图所示。

    这里说一下,如果有数据集可以修改一下这个代码,将数据集中的边集和节点集输入Networkx中的空白图中,剩余可以不改变,也可以模拟SIR模型在真实社交网络下的传播过程。
    从SIR模型中我们可以看到, β β β γ γ γ在很大程度会影响信息传播过程。如果利用真实数据集,也要注意不同的 β β β γ γ γ值,会有不同的结果。同时,利用好真实数据集,我们可以求出近似真实值 β β β γ γ γ值。
    另外在上述主程序代码的最后几行,我增加了生成网络初始分布图和动态实现社交网络中节点变化的函数。动态实现那部分需要一个ffmpeg的软件才可以生成。

    展开全文
  • SIR模型等传染病模型的研究背景,研究方法,及基本传播模型,研究现状及发展趋势。基于动力学系统研究舆情。
  • 通过计算模型的基本再生数,利用Hurwitz判据、Lyapunov稳定性定理和LaSalle不变性原理,得出垃圾信息传播平衡点的局部稳定和全局稳定条件。最后通过数值仿真与新浪微博真实数据集的对比实验证明所得结论的合理性和...
  • 针对经典传染病模型的不足进行了分析,结合社交网络的网络拓扑特点,考虑了网络中用户的不同感染状态,引入感染用户的衰减函数,提出了适合社交网络的信息传播模型。在真实e-mail网络中进行模型仿真,对比分析了不同...
  • 本文以Device-to-Device移动社交网络为研究对象,首先分析该网络中用户参与信息传播的特点,然后在传染病模型的基础上构建适合此网络特点的信息传播模型,并利用该模型分析真实Device-to-Device环境中的信息传播过程。...
  • 通过收益矩阵分析了现实网络信息传播中行为人的策略选择问题,阐述了各种模型的基本性质和现实意义。在建立模型的过程中充分考虑到网络信息传播的流动性,并将信任机制引入其中,使建立的模型更符合实际网络信息的传播...
  • 并基于改进的Deffaunt模型建立多Agent交互机制, 通过模拟仿真分析了不同因素对信息传播的影响, 发现个体的异质属性、个体间的相互影响力以及外界环境的因素对信息传播的速度和范围均有一定的影响..
  • 网络直报系统信息安全暨传染信息管理工作答案 单位 姓名 得分 一名词解释 1责任报告单位和责任报告人各级各类医疗卫生机构为责任报告单位其执行职务的人员和乡村医生个体开业医生均为责任疫情报告人 2初诊与复诊...
  • 指导网络成员单位开展传染病防治工作,定期进行质量控制、专业培训、绩效评估等,开展传染病相关信息定期收集、汇总分析和结果反馈等,发挥技术辐射带动作用。 推动完善传染病疫情监测系统。加强实验室检测能力建设...
  • 信息传播( information diffusion )

    千次阅读 2020-06-18 16:32:26
    信息传播( information diffusion ) 一些知识 1 信息传播是一个涵盖了大量科学技术的领域。...本书将信息传播过程定义为通过交互行为,一条信息(知识)传播并到达个体的过程 传播过程要包括以下3个要素: 传播

    信息传播( information diffusion )

    一些知识

    1
    信息传播是一个涵盖了大量科学技术的领域。主要从社会学、流行病学、人种学领域,讨论社会媒体挖掘的方法,主要关注信息传播的建模技术。
    2
    社会通过各种渠道为人们提供信息交换方式。例如,人们通过即时通信系统与好友或是通过公共媒体(电视、广播、报纸等)与公众分享知识。

    鉴于这种信息流动方式,不同的研究领域对信息传播过程有不同的定义。本书将信息传播过程定义为通过交互行为,一条信息(知识)传播并到达个体的过程 传播过程要包括以下3个要素:

    • 传播者。一个或一小部分发布者发起信息传播过程
    • 接收者。一个或部分接收者接收传播的信息 通常,接收者的数量远大于发布者的数量,并且可以覆盖发布者
    • 传播媒介。指信息传播的媒介。例如,谣言传播的主要媒介是个体之间的交流。
    • 3 四种主要的信息传播方式
      在这里插入图片描述
    1. 羊群效应

    羊群效应 (herd behavior) 是个体观察所有其他人的行为后,采取与其一致的行为效应。

    假设你初次到一个陌生的大城市观光。你在网上看到A餐厅的口碑特别好,于是决定去A餐厅吃晚餐。然而当你到了A餐厅时,却发现A餐厅几乎没有人,而它旁边的B餐斤几乎客满,且两家餐厅供应的菜品相同。此时,基于其他食客已经去过A餐斤但是选择B餐厅的心理,你也选择了B餐厅,这就是羊群行为。

    羊群效应之所以产生,是因为人们对群体智慧深信不疑。人们认为一定存在某些大多数人知道而自己不知道的信息,正是这些信息让这些人选择B餐厅而不是A餐厅。

    通常,设计一个羊群效应实验,需要满足以下四个条件:
    (1) 一个待做的决定。在上述实验中,人们需要决定选择哪家餐厅
    (2) 决定需要遵从一定的顺序
    (3) 人们所做的决定不是盲目的,而是在掌握一定的信息下所做的决定
    (4) 人们之间无法传递信息。人们不知道其他人已掌握的信息,但是可以通过观察他人的行为来推断他人掌握的信息

    由于羊群效应是随着时间的推移收敛到某一致性共识的,值得关注的是个体怎样干预这个过程。
    通常,可以通过为个体提供额外信息达到干预的目的。

    信息级联( information cascade )

    信息级联( information cascade )是指在信息传播的过程中,个体仅观察其近邻的行为。

    在社会媒体中,人们经常转发别人发布的内容。这些内容通常是源于用户在社会网络中的近邻(好友) 。信息在朋友之间的传播产生了信息级联。

    信息级联是指信息或决策在一组个体中扩散的过程,满足以下两个条件:
    (1) 个体通过网络相连接
    (2) 个体只能观察到其近邻(好友)的决策行为。因此,相对于羊群效应中用户已知所有人的决策而言,信息级联模型中用户获得的可用信息更少。

    独立级联模型

    在这里插入图片描述

    在羊群效应和信息级联这两种传播方式中,个体之间的网络关系都是可见的区别是,在羊群效应中,人们的行为受全局信息影响(全局依赖),而信息级联中,人们的思想或行为仅受其近邻的影响(局部依赖)。

    展开全文
  • 目前网络传播动力学的研究焦点之一是以经典的传染病动力学模型为基础,研究特定网络的信息传播规律。针对社交网络中信息传播的特点,在传统的SIR模型基础上,通过加入新的一类假免疫节点,建立了新的SDIR模型。考虑...
  • 根据信息传播在社会网络中的级联关系,将网络中的节点映射为到连续的特征空间,并通过节点间的距离反映节点的传播顺序。将信息在网络中的传播描述为特征空间中的能量扩散过程,并采用随机梯度下降法进行优化求解。...
  • 对在线社会网络信息传播的研究主要有信息传播动力模型、信息传播源和路径的发现与描绘、信息传播的最大化和最小化等,通过对在线社会网络信息传播的研究,人们可以对在线社会网络信息传播的影响进行预测和干预,从而...
  • 即时通讯网络已成为大众信息传播的主要途径,研究了...通过实验仿真对群数、聚类系数、传播者和免疫者的变化观察,发现群数越多则聚类系数越大,传播者峰值越高,以及免疫者也相应地有所提高,从而对信息传播的影响也越大。
  • 该方法将复杂信息系统各资产间的威胁传播路径定义为一棵威胁传播树,通过计算威胁传播树中各结点的期望损失以及威胁传播树出现的概率来对整个复杂信息系统进行风险安全评估。为验证本文所提方法的正确性、可行性,该文...
  • 具有非冗余信息记忆的社会传染动态
  • 通过比较传染病传播机制与信息传播机制,提出BBS中的信息传播机制模型。通过对BBS中帖子数量变化规律的建模,分析了BBS中信息传播模式的特征,并使用实际数据说明BBS中的信息传播模式。实验表明:BBS可以吸引大批的...
  • 在本文中,我们通过向传统的易受感染的移除模型中引入新的知情状态,提出了一种优化的信息传播模型。 我们通过在现实世界中的社交网络上的仿真验证了所提出的模型,结果表明该模型可以在扩散过程中再现信息的再现性...
  • 流行病管理者 传染信息管理系统
  • 本书介绍了数据可视化在信息传播过程中的美学和商业价值,为读者呈现了各类可视化数据和概念,并分步骤解读了如何创建和发布信息图,从而达到利用可视化信息与人沟通的目的,并帮助企业制定最佳的营销战略,更好地...
  • 信息传播模型——SIR的Python实现

    千次阅读 热门讨论 2020-09-26 12:53:30
    本文通过Python语言实现SIR模型,并进行可视化展示,所用例子为足球俱乐部数据集。

    本文通过Python语言实现SIR模型,并进行可视化,所用例子为足球俱乐部数据集。


    @author:xiao黄
    缓慢而坚定的生长


    我之前还写过SI和IC模型的Python实现及可视化,请点击传送门查看,希望对你们有帮助。

    SIR模型是传染病模型中最经典的一个。SIR是三个单词首字母的缩写,其中S是Susceptible的缩写,表示易感者;I是Infective的缩写,表示感染者;R是Removal的缩写,表示移除者。这个模型本身是在研究这三者的关系。在病毒最开始的时候,所有人都是易感者,也就是所有人都有可能中病毒;当一部分人在接触到病毒以后中病毒了,变成了感染者;感染者会接受各种治疗,最后变成了移除者。这三者的关系如下图所示:在这里插入图片描述
    β:易感节点被成功感染的概率
    γ:感染节点被治愈的概率

    • 代码里面有注释,如果看不懂可以留言,如果有错误也可以指出,谢谢
    • 介绍就上面一点,主要是看下面的代码

    代码:

    import io
    import random
    import urllib.request as urllib
    import zipfile
    
    import matplotlib.pyplot as plt
    import networkx as nx
    import numpy as np
    
    '''
    author:xiao黄
    time:2020-9-26
    '''
    
    '''
    1 易感人群(Susceptible):指未得病者,但缺乏免疫能力,与感病者接触后容易受到感染。
    2 感染人群(Infective):指染上传染病的人,他可以传播给易感人群。
    3 移除人群(Removed):被移出系统的人。因病愈(具有免疫力)或死亡的人。这部分人不再参与感染和被感染过程。
    N(t) = S(t) + I(t) + R(t)
    S(t+1) = S(t) - αS(t)
    I(t+1) = I(t) - βI(t)
    R(t+1) =  R(t) + βI(t)
    '''
    
    max_iter_num = 200 # 模拟的次数
    # G = nx.karate_club_graph() # 空手道俱乐部
    
    # 足球数据集
    url = "http://www-personal.umich.edu/~mejn/netdata/football.zip"
    sock = urllib.urlopen(url)  
    s = io.BytesIO(sock.read())  
    sock.close()
    zf = zipfile.ZipFile(s)  
    gml = zf.read("football.gml").decode()  
    gml = gml.split("\n")[1:]
    G = nx.parse_gml(gml) 
    
    nums = G.number_of_nodes() # 足球数据节点 -> 115
    print('总节点数',nums)
    
    alpha = 0.25 # 传染概率
    beta = 0.65 # 治愈概率
    
    for edge in G.edges:
        G.add_edge(edge[0], edge[1], weight=random.uniform(0,1)) # 可不可以作为权值 病毒的感染能力
    for node in G:
        G.add_node(node, state = 0) # 用state标识状态 state=0 易感 ,state=1 感染 , state=2 治愈
    
    seed = 'Arkansas' # 选定Arkansas作为传染源
    G.node[seed]['state'] = 1 # 表示Arkansas是感染的 
    
    all_infect_nodes = [] # 所有被感染的节点放在这里
    all_infect_nodes.append(seed)
    
    all_remove_nodes = [] # 所有被治愈的节点放在这里
    
    infect = [] # 随着迭代次数的增加的感染总人数
    recover = [] # 随着迭代次数的增加的治愈总人数
    
    for i in range(max_iter_num):
        new_infect = list() # 新被感染的
        new_remove = list() # 新被治愈的
        # t1 = '%s time' % i + ' %s nodes' % len(all_infect_nodes)
        # print('当前感染节点数:', t1) # 当前有多少个节点被感染
        # t2 = '%s time' % i + ' %s nodes' % len(all_remove_nodes)
        # print('治愈节点数:', t2)
        infect.append(len(all_infect_nodes))
        recover.append(len(all_remove_nodes))
        
        # 感染的机会不止一次
        # 治愈后不会被感染
        for v in all_infect_nodes:
    
            for nbr in G.neighbors(v): # v的邻居
                if G.node[nbr]['state'] == 1: # 被感染
                    edge_data = G.get_edge_data(v, nbr) # 得到边的权值
                    if beta > edge_data['weight']: # 治愈概率
                        G.node[nbr]['state'] == 2 # 
                        if nbr not in all_remove_nodes:
                            new_remove.append(nbr)
    
                if G.node[nbr]['state'] == 0 :# 如果这个邻居节点没被感染且没有被治愈
                    edge_data = G.get_edge_data(v, nbr)
                    if alpha < edge_data['weight']:
                        G.node[nbr]['state'] = 1
                        new_infect.append(nbr)
    
        for i in new_remove:
            if i in new_infect:
                new_infect.remove(i)
            if i in all_infect_nodes: 
                all_infect_nodes.remove(i)
        
        all_infect_nodes.extend(new_infect) # 将新感染的添加到
        all_remove_nodes.extend(new_remove)
        all_infect_nodes = list(set(all_infect_nodes)) # 去重
        all_remove_nodes = list(set(all_remove_nodes))
    
    
    # matplotlib中文支持
    plt.rcParams['font.sans-serif'] = ['SimHei']  #aaaaa.py 步骤一(替换sans-serif字体)
    plt.rcParams['axes.unicode_minus'] = False  # 步骤二(解决坐标轴负数的负号显示问题)
    
    def draw_picture(nums,max_iter_num,infect,recover):
        x = range(max_iter_num)  
        susceptible =  []
        for i in range(max_iter_num):
            susceptible.append(nums - infect[i] - recover[i])
    
        plt.figure(figsize=(8,6), dpi=300) # 图片大小,清晰度
        
        plt.plot(x,infect, color='r', label='感染数', linestyle='--',)
        plt.plot(x,recover, color='b', label='治愈数') # 可以修改颜色、线条风格、图例
        plt.plot(x,susceptible,color='g',label='易感数')
    
        plt.legend(loc='upper right') # 显示图例
    
        plt.xticks(range(0,max_iter_num,20)) # 修改x的刻度
        plt.yticks(range(0,nums,10)) # 修改y的刻度
    
        # 添加网格显示
        plt.grid(True, linestyle='--', alpha=0.5)
    
        # 添加x,y轴描述信息及标题
        plt.ylabel('数量')
        plt.xlabel('天数')
    
        # plt.title('对比')
    
        plt.show()
    
    draw_picture(nums,max_iter_num,infect,recover)
    
    

    代码运行结果:
    在这里插入图片描述


    有帮助的话,在这里点个赞再走呗~


    展开全文
  • 不幸的是,我们仍然缺乏对这些系统中发挥作用的动力学的基本了解,特别是对贡献和注意力如何通过信息网络相互作用和传播的了解。 我们利用大规模的自然实验来研究对维基百科文章的外生内容贡献如何影响他们吸引的...
  • 分析学术社交网络信息传播的特征,构造了一个学术社交网络信息传播模型.然后,通过编程提取了学术社交网络―――研究之门网站中的用户数据,构造一个用户关系网络数据集.根据对随机内容的传播情况统计,绘制出信息传播的...
  • 传染传播模型(含matlab代码)

    万次阅读 多人点赞 2020-01-25 19:33:10
    传染传播模型 2020年初,一种新型冠状病毒袭击了中国武汉。 随着卫生设施的改善、医疗水平的提高以及人类文明的不断发展,诸如霍乱、天花等曾经肆虐全球的传染性疾病已经得到有效的控制,但是一些新的、不断变异着...
  • 结合Multi-Agent仿真技术和Netlogo仿真平台,模拟了微观个体传播行为与宏观整体运行机制之间的动力学关系,通过大量的数值仿真验证了模型的合理性,依据仿真实验的结果分析了信息传播系统的非线性演化规律并提出了...
  • 本文报告了一项有关提供护理人员最关心的信息的必要性的研究:健康管理,对突发疾病的应对以及传染病的爆发。 我们询问了东京A区儿童保育支持服务的用户和提供者,是否愿意接收与传染病有关的信息。 在通过邮件发送...
  • 推断在线社交网络上的基础信息传播非常重要,因为它可以带来新的见解,并可以进行预测以及影响信息传播。 在本文中,当只有有限的传播详细信息可用时,我们将分析在线社交网络中的传播过程。 我们使用从中国最大推荐...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 299,969
精华内容 119,987
关键字:

信息通过什么传播