节点(个体)级SIS模型python代码

原来做实验我用matlab写代码。
现在想用machine learning来做cyber security,改成python方便些。
网上一搜仓室级模型代码不少,但是节点(个体)级模型代码没有。
这里贡献一发,出图效果如下:
这里写图片描述

# -*- coding: utf-8 -*-
# @Time    : 2018/3/27 18:00
# @Author  : timothy

import scipy.integrate as spi
import numpy as np
import pylab as pl
import networkx as nx
import random as rd


  • 9
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
以下是一个使用SIS模型检验节点重要性的Python案例: ``` import networkx as nx import random # 生成一个随机图 G = nx.gnm_random_graph(100, 500) # 设置每个节点的传染率和恢复率 for node in G.nodes(): G.nodes[node]['beta'] = random.uniform(0, 1) G.nodes[node]['gamma'] = random.uniform(0, 1) # 定义SIS模型的演化函数 def sis_model(G, beta, gamma, initial_infected, num_steps): infected = set(initial_infected) for i in range(num_steps): new_infected = set() for node in G.nodes(): if node in infected: # 对每个感染节点,以beta的概率传染它的邻居 for neighbor in G.neighbors(node): if random.random() < beta and neighbor not in infected: new_infected.add(neighbor) else: # 对每个未感染节点,以gamma的概率让它恢复 if random.random() < gamma: new_infected.add(node) infected |= new_infected return infected # 对每个节点进行影响力评估 scores = {} for node in G.nodes(): initial_infected = [node] final_infected = sis_model(G, G.nodes[node]['beta'], G.nodes[node]['gamma'], initial_infected, 10) scores[node] = len(final_infected) # 输出前十个影响力最大的节点 rank = sorted(scores.items(), key=lambda x: x[1], reverse=True) for i in range(10): print(rank[i]) ``` 以上代码中,我们首先生成一个包含100个节点、500条边的随机图,然后为每个节点设置传染率beta和恢复率gamma。接着,我们定义了一个名为sis_model()的函数,用于模拟SIS模型的演化过程,并返回最终感染的节点集合。在模拟过程中,我们以每个节点为初始感染点,运行10轮模拟,并记录最终感染的节点数作为该节点的影响力评分。 最后,我们对所有节点进行影响力评估,并输出影响力最大的前十个节点。这样,我们就可以快速得到对网络影响最大的节点,以便进行后续的分析和应用。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值