Python莫兰生死抑制放大进化图

🎯要点

🎯种群离散时间莫兰生死动态图解 | 🎯良好混合种群的固定概率 | 🎯数值求解生成埃尔多斯-雷尼图 | 🎯计算马尔可夫链的转移矩阵概率 | 🎯出生死亡动态和死亡出生动态概率无向随机图和有向随机图,转移矩阵概率计算

📜进化图用例

📜Python种群邻接矩阵彗星风筝进化图算法

📜Python和C++骨髓细胞进化解析数学模型

🍪语言内容分比

在这里插入图片描述
在这里插入图片描述

🍇Python转移矩阵

E E E 定义构成时间序列数据的 k k k 个唯一事件集。例如,时间序列可能由以下三个基本且唯一的事件组成,这些事件表示在离散时间步长上绘制数据时观察到的路径轨迹类型:向下、持平和向上。令 S S S 定义长度为 n n n(表示离散时间步长)的序列,该序列由 E E E 中定义的事件组成,表示部分或全部数据。例如,序列 [向上、向下、向上、持平、向上] 表示五个时间步长的数据。

现在可以定义一个维度为 k 2 k^2 k2的马尔可夫转移矩阵 M M M,使得每个元素 M ( i , j ) M(i, j) M(i,j) 描述在给定时间序列中从时间步骤 t t t 中的事件 E ( i ) E(i) E(i)转移到时间步骤 t + 1 t +1 t+1 中的事件 E ( j ) E(j) E(j) 的概率。换句话说,$M(i, j) $表示在连续时间步骤中两个事件之间转移的条件概率。从图论意义上讲,如果时间序列数据中 E ( i ) E(i) E(i) 后面是 E ( j ) E(j) E(j),则事件$ E(i)$ 和 E ( j ) E(j) E(j) 可以被认为是由有向边 E ( i ) → E ( j ) E(i) \rightarrow E(j) E(i)E(j) 连接的节点,那么马尔可夫转移矩阵 M M M​​ 本质上表示图中节点所描绘事件的邻接矩阵(或共现矩阵)的规范化版本。

假设我们有以下涵盖 11 个连续时间步长的原始时间序列数据:[1, 2, -2, -1, 0, 0, 2, 2, 1, 2, 3]。使用上面描述的路径轨迹的简化视图,我们可以将数据转换为以下 10 个事件序列,这些事件描述相邻时间步长之间的转换:[上、下、上、上、平、上、平、下、上、上]。

我们现在可以构建以下邻接矩阵来捕获事件序列中同时出现的模式:
A = ( 2 2 1 1 0 1 2 0 0 ) A=\left(\begin{array}{lll} 2 & 2 & 1 \\ 1 & 0 & 1 \\ 2 & 0 & 0 \end{array}\right) A= 212200110
元素 A ( i , j ) A(i, j) A(i,j) 表示事件序列中某个时间步 t t t 的事件 i i i 后面跟着时间步 t + 1 t+1 t+1 的事件 j j j 的次数; i i i j j j 分别是行索引和列索引。请注意,行表示从上到下、从上到下的顺序的事件,而列从左到右表示相同的事件。例如, A A A 的左上角元素表示在给定的事件序列中,上事件后紧跟着另一个上事件两次。 A A A 的中右元素表示在事件序列中,平事件之后紧接着下事件。等等。

我们可以按行或按列标准化矩阵 A A A 以生成转换矩阵。如果我们使用基于行的归一化,则元素 M ( i , j ) M(i, j) M(i,j) 将描述给定事件 E ( i ) E(i) E(i) 在时间步 t + 1 t+1 t+1 中看到事件 E ( j ) E(j) E(j) 的概率时间步 t t t。因此,每行中的概率之和应为 1 。在我们的示例中,行归一化矩阵如下所示:
M rnorm  = ( 2 / 5 2 / 5 1 / 5 1 / 2 0 1 / 2 2 / 2 0 0 ) = ( 0.4 0.4 0.2 0.5 0 0.5 1 0 0 ) M_{\text {rnorm }}=\left(\begin{array}{ccc} 2 / 5 & 2 / 5 & 1 / 5 \\ 1 / 2 & 0 & 1 / 2 \\ 2 / 2 & 0 & 0 \end{array}\right)=\left(\begin{array}{ccc} 0.4 & 0.4 & 0.2 \\ 0.5 & 0 & 0.5 \\ 1 & 0 & 0 \end{array}\right) Mrnorm = 2/51/22/22/5001/51/20 = 0.40.510.4000.20.50
类似地,如果我们要使用基于列的归一化,则元素 M ( i , j ) M(i, j) M(i,j) 将描述给定时间步 t t t 中的事件 E ( j ) E(j) E(j) 的情况下,在时间步 t − 1 t-1 t1 中发生事件 E ( i ) E(i) E(i) 的概率。现在每列中的概率之和应为 1。在我们的示例中,列归一化矩阵如下所示:
M cnorm  = ( 2 / 5 2 / 2 1 / 2 1 / 5 0 1 / 2 2 / 5 0 0 ) = ( 0.4 1 0.5 0.2 0 0.5 0.4 0 0 ) M_{\text {cnorm }}=\left(\begin{array}{ccc} 2 / 5 & 2 / 2 & 1 / 2 \\ 1 / 5 & 0 & 1 / 2 \\ 2 / 5 & 0 & 0 \end{array}\right)=\left(\begin{array}{ccc} 0.4 & 1 & 0.5 \\ 0.2 & 0 & 0.5 \\ 0.4 & 0 & 0 \end{array}\right) Mcnorm = 2/51/52/52/2001/21/20 = 0.40.20.41000.50.50
请注意,行归一化(名义上向前看时间)的条件概率可能与列归一化(向后看时间)的条件概率不同。

代码计算

import pandas as pddef get_transition_tuples(ls):return [(ls[i-1], ls[i]) for i in range(1, len(ls))]def get_transition_event(tup):transition_event = 'flat'if tup[0] < tup[1]:transition_event = 'up'if tup[0] > tup[1]:transition_event = 'down'return transition_eventls_raw_time_series = [1, 2, -2, -1, 0, 0, 2, 2, 1, 2, 3]
ls_transitions = get_transition_tuples(ls_raw_time_series)
ls_events = [get_transition_event(tup) for tup in ls_transitions]
ls_event_transitions = get_transition_tuples(ls_events)
ls_index = ['up', 'flat', 'down']
df = pd.DataFrame(0, index=ls_index, columns=ls_index)for i, j in ls_event_transitions:df[j][i] += 1  df_rnorm = df.div(df.sum(axis=1), axis=0).fillna(0.00)df_cnorm = df.div(df.sum(axis=0), axis=1).fillna(0.00)

这应该产生以下转换矩阵:

>>> df  up    flat  down
up    2     2     1
flat  1     0     1
down  2     0     0
>>> df_rnorm  up    flat  down
up    0.4   0.4   0.2
flat  0.5   0.0   0.5
down  1.0   0.0   0.0
>>> df_cnorm  up    flat  down
up    0.4   1.0   0.5
flat  0.2   0.0   0.5
down  0.4   0.0   0.0

可视化转移状态

def get_df_edgelist(df, ls_index):edgelist = []for i in ls_index:for j in ls_index:edgelist.append([i, j, df[j][i]])return pd.DataFrame(edgelist, columns=['src', 'dst', 'weight'])def edgelist_to_digraph(df_edgelist):g = Digraph(format='jpeg')g.attr(rankdir='LR', size='30')g.attr('node', shape='circle')nodelist = []for _, row in df_edgelist.iterrows():node1, node2, weight = [str(item) for item in row]if node1 not in nodelist:g.node(node1, **{'width': '1', 'height': '1'})nodelist.append(node1)if node2 not in nodelist:g.node(node2, **{'width': '1', 'height': '1'})nodelist.append(node2)g.edge(node1, node2, label=weight)return gdef render_graph(fname, df, ls_index):df_edgelist = get_df_edgelist(df, ls_index)g = edgelist_to_digraph(df_edgelist)g.render(fname, view=True)
render_graph('adjmat', df, ls_index)
render_graph('transmat_rnorm', df_rnorm, ls_index)
render_graph('transmat_cnorm', df_cnorm, ls_index)

👉参阅、更新:计算思维 | 亚图跨际

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/48558.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

react Jsx基础概念和本质

什么是jsx jsx是JavaScript和XML(HTML)的缩写&#xff0c;表示在js代码中编写HTML模板结构&#xff0c;它是react中编写UI模板的方式 const message this is message function App(){return (<div><h1>this is title</h1>{message}</div>) } jsx优…

Mike she中常出现的error及解决办法

前言&#xff1a; 最近用了下MIKE SHE坡面流模块&#xff0c;感觉一场雨降下来和MIKESHE和MIKE21模块算出来还是有不一样的地方&#xff0c;这个先不聊&#xff0c;聊点直接的&#xff0c;到底一个玩个模块遇到了哪些错误&#xff0c;我们来说说解决方法。 Error1&#xff1a;…

嵌入式人工智能(16-基于树莓派4B的电机控制-步进电机28BYJ-48)

1、步进电机 步进电机是一种旋转电机&#xff0c;通过在特定的步进角度内进行转动来实现精确的定位控制。步进电机通常由电磁线圈和磁轴组成&#xff0c;线圈通过电流激励产生磁场&#xff0c;而磁轴则受到线圈所产生的磁场的作用而转动。 步进电机的运动是离散的&#xff0c;…

el-select选择器修改背景颜色

<!--* FilePath: topSearch.vue* Author: 是十九呐* Date: 2024-07-18 09:46:03* LastEditTime: 2024-07-18 10:42:03 --> <template><div class"topSearch-container"><div class"search-item"><div class"item-name&quo…

野兔在线工具箱系统全新升级改版,基于TP8和yetuadmin后台实现

野兔在线工具箱系统全新升级改版&#xff0c;基于TP8和yetuadmin后台实现 系统名称&#xff1a;野兔在线工具系统 系统语言&#xff1a;支持多语言&#xff0c;大概有20种 系统源码&#xff1a;不加密&#xff0c;开源 系统开发&#xff1a;PHPMySQL (基于thinkphp8&#x…

linux内核中list的基本用法

内核链表 1 list_head 结构 为了使用链表机制&#xff0c;驱动程序需要包含<linux/types.h>头文件&#xff0c;该文件定义了如下结构体实现双向链&#xff1a; struct list_head {struct list_head *next, *prev; };2 链表的初始化 2.1 链表宏定义和初始化 可使用以…

无刷电机数学模型建立之——克拉克变换

前言 MOS管如何驱动无刷电机&#xff0c;请参考如下链接 无刷电机概念与原理 一、FOC流程图 二、FOC的过程是输入需求的电机力矩&#xff0c;最后把需求的电机力矩转换为三相线的电力输出&#xff0c;并且让电机旋转物理上输出需求的力矩的过程&#xff0c;这也称为电机控制三…

钡铼分布式I/O系统边缘计算Modbus,MQTT,OPC UA耦合器BL206

BL206系列耦合器是一个数据采集和控制系统&#xff0c;基于强大的32 位微处理器设计&#xff0c;采用Linux操作系统&#xff0c;支持Modbus&#xff0c;MQTT&#xff0c;OPC UA协议&#xff0c;可以快速接入现场PLC、DCS、PAS、MES、Ignition和SCADA以及ERP系统&#xff0c;同时…

通过vue3 + TypeScript + uniapp + uni-ui 实现下拉刷新和加载更多的功能

效果图: 核心代码: <script lang="ts" setup>import { ref, reactive } from vue;import api from @/request/api.jsimport empty from @/component/empty.vueimport { onLoad,onShow, onPullDownRefresh, onReachBottom } from @dcloudio/uni-applet form …

【Android】Activity的生命周期

Activity的生命周期 1.返回栈 其实Android是使用任务&#xff08;task&#xff09;来管理Activity的&#xff0c;一个任务就是一组存放在栈里的Activity的集合&#xff0c;这个栈也被称作返回栈&#xff08;back stack&#xff09;。栈是一种后进先出的数据结构&#xff0c;在…

AES算法概述

文章目录 一、AES 概述二、AES 加密算法的特点三、秘钥类型四、填充方式五、加密方式 一、AES 概述 二、AES 加密算法的特点 AES加密的数据块长度为128&#xff08;16字节&#xff09;&#xff0c;长度不足需要填充。密码长度可以为16,24,32字节。 三、秘钥类型 AES加密按秘…

【C++高阶】精通AVL树:全面剖析与深度学习

目录 &#x1f680; 前言一&#xff1a; &#x1f525; AVL树的性质二&#xff1a; &#x1f525; AVL树节点的定义三&#xff1a; &#x1f525; AVL树的插入四&#xff1a; &#x1f525; AVL树的平衡调整&#xff08;附动图&#xff09; 五&#xff1a;&#x1f525; AVL树的…

c++初阶篇(三):内联函数及auto关键字

1.内联函数 1.1 概念 以inline修饰的函数叫做内联函数&#xff0c;编译时C编译器会在调用内联函数的地方展开&#xff0c;没有函数调 用建立栈帧的开销&#xff0c;内联函数提升程序运行的效率。 如果在上述函数前增加 inline 关键字将其改成内联函数&#xff0c;在编译期间编…

RNN循环递归网络讲解与不掉包python实现

这里写目录标题 1.算法简介2. RNN算法原理2.1 RNN基本结构介绍2.2 计算流程 3.完整训练代码 1.算法简介 参考论文&#xff1a;Elman J L. Finding structure in time[J]. Cognitive science, 1990, 14(2): 179-211.&#xff0c;谷歌被引次数超16000! 说到循环递归结构就不得不…

秒杀案例-分布式锁Redisson、synchronized、RedLock

模拟秒杀 源码地址前期准备创建数据库表导入数据dependenciespomControllerTSeckillProductTseckillProductServiceTseckillProductServiceImplTseckillProductMapperTseckillProductMapper.xml使用JMeter压力测试开始测试超卖现象原因解决办法更改数据库库存500进行JMeter压力…

运维锅总详解Kubernetes之Kubelet

本文尝试从Kubelet的发展历史、实现原理、交互逻辑、伪代码实现及最佳实践5个方面对Kubelet进行详细阐述。希望对您有所帮助&#xff01; 一、kubelet发展历史 Kubelet 是 Kubernetes 中的核心组件之一&#xff0c;负责管理单个节点上的容器运行。它的发展历史和功能演进是 Kub…

【LeetCode】222. 完全二叉树的个数

什么是计算机基础&#xff1f;如果本题能够用二分二进制二叉树的方式解出本题&#xff0c;那么我可以认为你的计算机基础就很好了。很久以来&#xff0c;我一直认为自己的计算机基础好&#xff0c;但是自刷题以来&#xff0c;跟网上这么多优秀的同学相比&#xff0c;我发现我实…

五分钟学会 Docker Registry 搭建私有镜像仓库

在上一篇文章《前端不懂 Docker &#xff1f;先用它换掉常规的 Vue 项目部署方式》中&#xff0c;我们学习了如何使用 aliyun 私有镜像仓库&#xff0c;也了解到可以使用 Docker Registry 搭建私有镜像仓库。这篇文章就分享下实操过程。 registry 是官方提供的 registry 镜像&…

WEB前端09-前端服务器搭建(Node.js/nvm/npm)

前端服务器的搭建 在本文中&#xff0c;我们将介绍如何安装和配置 nvm&#xff08;Node Version Manager&#xff09;以方便切换不同版本的 Node.js&#xff0c;以及如何设置 npm&#xff08;Node Package Manager&#xff09;使用国内镜像&#xff0c;并搭建一个简单的前端服…

类和对象(三)

默认成员函数 接下来继续看剩下的两个默认成员函数。 const成员函数 将const修饰的成员函数称之为const成员函数&#xff0c;const修饰成员函数放到成员函数参数列表的后 ⾯。const实际修饰该成员函数隐含的this指针&#xff0c;表明在该成员函数中不能对类的任何成员进⾏修…