计算网络中节点的SIR值(Python)_jazz网络数据集-程序员宅基地

技术标签: python  复杂网络  

1 SIR模型代码

复杂网络研究中的SIR传播模型(Python实现)_Morty的博客-程序员宅基地

2 计算每个节点的SIR值

import networkx as nx
import numpy as np
import pandas as pd

# 引入1中的SIR代码,也可直接复制粘贴到本代码中
from SIR import SIR_network

if __name__ == '__main__':
    '''
    数据准备。更换为自己的数据文件!!!
    '''
    adj = np.loadtxt('data/adj.txt', dtype=np.int)  # 网络的邻接矩阵
    graph = nx.from_numpy_matrix(adj)  # 网络图:默认无向图;nx.DiGraph(adj)为创建有向图
    nodes_n = adj.shape[0]  # 行数,节点数
    print('共 ' + str(nodes_n) + ' 个节点!')

    '''
    SIR传播
    '''
    dfSIR = pd.DataFrame(columns=['Id', 'SIR'])
    str_fm = "{0:^5}\t{1:^10}"  # 格式化输出
    print(str_fm.format("Id", "SIR"))
    # 循环所有节点
    for j in range(nodes_n):
        node_id = j + 1  # 索引序列[0~n-1],此处+1转回为Id
        # 由于SIR为概率模型,我们进行多次实验取平均值,实验次数可自行设置
        n = 100  # 实验次数
        sir_list = []
        for k in range(n):
            # SIR参数设置,可自行设置
            beta = 0.1  # 感染率
            gamma = 0.5  # 免疫率
            step = 20  # SIR模型中的感染传播轮次
            # 节点的感染情况
            sir_source = [j]  # 方法输入为数组,将节点强制转换为数组,且SIR实现中使用的为节点索引号[0~n-1],此处使用j索引号
            sir_values = SIR_network(graph, sir_source, beta, gamma, step)
            Fc = sir_values[step - 1]  # 最终的感染范围
            # 由于有概率出现节点直接免疫,传播停止的“异常”情况
            # 我们设置阈值,只统计传播覆盖范围大于1%(0.01)的情况
            if Fc > 0.01:
                sir_list.append(Fc)
        sir = np.mean(sir_list)  # 对100实验的输出结果求均值
        print(str_fm.format(node_id, sir, chr(12288)))
        # 添加至dataframe
        dfSIR = dfSIR.append({
            'Id': int(node_id),
            'SIR': sir
        }, ignore_index=True)
    '''
    输出到文件。更换为自己的数据文件!!!
    '''
    dfSIR.to_csv('result/Node-SIR.csv', index=False)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_40935887/article/details/118694608

智能推荐

CSS3 三角形运用-程序员宅基地

文章浏览阅读66次。酷酷的 CSS3 三角形运用 概述在早期的前端Web设计开发年代,完成一些页面元素时,我们必须要有专业的PS美工爸爸,由PS美工爸爸来切图,做一些圆角、阴影、锯齿或者一些小图标。在CSS3出现后,借助一些具有魔力的CSS3属性,使得这些元素大多都可以由开发人员自己来完成。在开始阅读这篇文章前,我们先喊个口号:不想当艺术家的程序员不是好设计师!图例..._如何使用c3画出一个3角形

Ajax.

Ajax 是浏览器中的技术:用来实现客户端网页请求服务器的数据。它的英文全称是AJavascriptAndXML,简称 Ajax。

C++多态(全)

C++多态

string模拟实现(直接上源码)

【代码】string模拟实现(直接上源码)

Objective-C大爆炸:从零到单例模式

类的本质可以被理解为,自定义的一种数据类型,是在内存开辟空间的模版。接口:定义该类包含的成员以及方法实现:为该类的方法提供实现在上图中我们可以看到,@interface用于声明定义的接口部分,@end说明结束声明。一般来说,我们会将定义类的声明放在.h文件当中,以方便程序的维护。//student.h中的内容//Student为类名, NSObject为对象名//成员名应被定义在大括号之中,且成员名前缀应该有_int _age;

Now in Android 4月份更新速览

Android 15 Beta带来了一系列新功能,其中包括默认边缘到边缘显示、更流畅的NFC体验、字符间文本调整等。此外,该版本已经面向Pixel设备提供,开发者可以注册获取此版本并体验其中的新特性。边缘到边缘显示是Android 15中的一项重要更新,它使应用程序可以更好地利用屏幕空间,提供更加沉浸式的用户体验。在Android 15中,系统会自动调整应用程序的界面,以适应不同尺寸和形状的屏幕,从而确保内容可以完整显示并且布局合理。

随便推点

Android 网络连接工具类 Utility-程序员宅基地

文章浏览阅读240次。** * Utility class for http request. * */ public class Utility { private static RequestParameters mRequestHeader = new RequestParameters(); public static final String BOUN..._androidutility怎么用

邮件乱码产生的原因及其分析_发邮件乱码-程序员宅基地

文章浏览阅读2k次。本文主要介绍邮件乱码产生的主要原因及几种解决方法:   E-mail编码标准   由于一个汉字是用两个扩展 ASCII码表示,对DOS、Windows及Unix系统来说,所有英文字母及符号都是用ASCII码来代表,ASCII码只用到每个字节的前7位。而一些电脑系统在通信时不使用8-bit clean传输方式,无法处理8位的数据或把8位数据当作7位来处理,数据就会被破坏。对电子邮件来说,有时_发邮件乱码

51单片机的定时器2的配置_51单片机定时器2-程序员宅基地

文章浏览阅读8k次,点赞25次,收藏125次。学过一段时间单片机的你发现,中断服务函数可以在主函数进行的同时,进行一些对时间要求高的模块的配置时,则要用到定时器中断。而如果你要实现多个功能的操作,会使用多个定时器是必要的STC89C51单片机所有的资源中最不好搞清楚的就是定时器2,尤其是对于那些以前从来没有玩过单片机的新手。定时器2是新增资源,也是51单片机定时器里面功能最强大的一个定时器。​ 定时器2有三个模式,在这里我们只是介绍系统的简单配置与将定时器2当成一般递增/递减计数器的使用代码,剩下的模式可以自己查阅手册:​ 下面我带着大家简单配置一_51单片机定时器2

Spring Boot 如何实现缓存预热

监听 ContextRefreshedEvent 或 ApplicationReadyEvent 等应用上下文初始化完成事件。

记一次使用Notepad++正则表达式批量替换SQL语句

想把其中涉及的多个CREATE TABLE语句前添加相应的DROP TABLE语句如下,如对应。即为捕获组(使用括号包围的正则)的概念,而捕获组的内容可以通过序号进行提取,如通过。使用Notepad++打开sql脚本,按CTRL+F弹出查找对话框,点击上方的。标签,输入如下替换内容后,选择查找模式为。即被替换为相应的table名称,切中的。获取第一个捕获组的内容,如此。

Centos7安装完ifconfig命令出错:bash: command not found

3:将/etc/sysconfig/network-scripts/ifcfg-enp0s3中的ONBOOT=yes即可。安装完Centos 7后,ifconfig,yum,ping都不能使用,原因在于无法连网。2:输入hostname -i,查看ip地址,无ip地址。1:虚拟机设置中网络,选择桥接网络。

推荐文章

热门文章

相关标签