随机过程数据的马尔可夫链生成器
markovfsm的Python项目详细描述
#马尔可夫链和有限状态随机机这个包实现了分析随机(或随机)过程的功能。
(有限状态机)
评价马尔可夫链的功能。您可以轻松地从马尔可夫链构建概率自动机。
markovfsm`
如果您想使用绘图功能,不需要特殊的先决条件,除了graphviz之外。
在这种情况下,您必须安装graphviz和[`graphviz`pypi包](https://pypi.org/project/graphviz/)。
最简单的马尔可夫过程-一个完美硬币的翻转。
让"0"状态为"tails",而"1"状态对应于"heads"。
实验次数:
`` python
从随机导入random
从graphviz导入有向图
0.5否则0
chain=chain(2,coin())为范围(1000000)内的i创建一个具有2个状态的空马尔可夫链
:让马尔可夫链构建状态转移矩阵
chain.learn(coin())基于1000000个硬币翻转
````
让我们绘制一个状态转移图。
``` python
g=有向图(format='svg',engine='dot',
graph={'pad':'0.1','nodesep':'0.4','ranksep':'1.0',
node={'fontname':'helvetica'},
edge={'fontsize':'8.0','fontname':'helvetica'})
transition_matrix(),
lambda s:"tails"如果s==0否则为"heads")
g.render('./graph')这将输出"graph.svg`(svg graphics)
和"graph`(dot language)"文件le是滚动一个装配好的骰子的过程。
我们使用beta发行版来模拟非完美的骰子。
编码:utf-8
/>
多次掷骰子为该进程构建马尔可夫链
对于范围(100000):
chain.learn(rigged\u dice())
````
,然后绘制状态转换图。
``python
def state\mapping(state):
if state==0:return u'
if state==1:returnu''
如果state==2:返回u''
如果state==3:返回u''
如果state==4:返回u''
如果state==5:返回u''
g=有向图(format='svg',engine='dot',
图形属性={'pad':'0.1','nodesep':'0.15','ranksep':'0.5'},
边属性={fontsize':'6.0',fontname':'helvetica'})
ne可以正好处于有限个状态中的一个。
概率自动机是一种状态之间的转换是概率的fsm。
与普通自动机不同fsm,只需要状态之间可能的转换图,
概率自动机添加每个转换的概率。
``python
来自random import random
r/>
多次掷硬币并为这个过程构建马尔可夫链
让0为正,1为尾
为我在范围(1000000)内(1000000):
链。学习(0如果随机()>;0.5其他1)
/>获取转换矩阵
;;它应该看起来像:
这种转换的统计信息将等于马尔可夫过程行中的j元素包含从状态"i"转换到状态"j"的概率。
`chain.learn(state)`will learn markov chain from new`state` transition
`fsm(chain,initial_state)`-对象,表示概率自动机,
初始状态许可证Creative Commons CC0.
news
===
<0.2
--
*发布日期:2019年3月25日*
*更新使用信息并添加插图
*更好的文档
<0.1
--
*发布日期:2017年12月20日*
*首次发布
(有限状态机)
评价马尔可夫链的功能。您可以轻松地从马尔可夫链构建概率自动机。
markovfsm`
如果您想使用绘图功能,不需要特殊的先决条件,除了graphviz之外。
在这种情况下,您必须安装graphviz和[`graphviz`pypi包](https://pypi.org/project/graphviz/)。
最简单的马尔可夫过程-一个完美硬币的翻转。
让"0"状态为"tails",而"1"状态对应于"heads"。
实验次数:
`` python
从随机导入random
从graphviz导入有向图
0.5否则0
chain=chain(2,coin())为范围(1000000)内的i创建一个具有2个状态的空马尔可夫链
:让马尔可夫链构建状态转移矩阵
chain.learn(coin())基于1000000个硬币翻转
````
让我们绘制一个状态转移图。
``` python
g=有向图(format='svg',engine='dot',
graph={'pad':'0.1','nodesep':'0.4','ranksep':'1.0',
node={'fontname':'helvetica'},
edge={'fontsize':'8.0','fontname':'helvetica'})
transition_matrix(),
lambda s:"tails"如果s==0否则为"heads")
g.render('./graph')这将输出"graph.svg`(svg graphics)
和"graph`(dot language)"文件le是滚动一个装配好的骰子的过程。
我们使用beta发行版来模拟非完美的骰子。
编码:utf-8
/>
多次掷骰子为该进程构建马尔可夫链
对于范围(100000):
chain.learn(rigged\u dice())
````
,然后绘制状态转换图。
``python
def state\mapping(state):
if state==0:return u'
if state==1:returnu''
如果state==2:返回u''
如果state==3:返回u''
如果state==4:返回u''
如果state==5:返回u''
g=有向图(format='svg',engine='dot',
图形属性={'pad':'0.1','nodesep':'0.15','ranksep':'0.5'},
边属性={fontsize':'6.0',fontname':'helvetica'})
ne可以正好处于有限个状态中的一个。
概率自动机是一种状态之间的转换是概率的fsm。
与普通自动机不同fsm,只需要状态之间可能的转换图,
概率自动机添加每个转换的概率。
``python
来自random import random
r/>
多次掷硬币并为这个过程构建马尔可夫链
让0为正,1为尾
为我在范围(1000000)内(1000000):
链。学习(0如果随机()>;0.5其他1)
/>获取转换矩阵
;;它应该看起来像:
这种转换的统计信息将等于马尔可夫过程行中的j元素包含从状态"i"转换到状态"j"的概率。
`chain.learn(state)`will learn markov chain from new`state` transition
`fsm(chain,initial_state)`-对象,表示概率自动机,
初始状态许可证Creative Commons CC0.
news
===
<0.2
--
*发布日期:2019年3月25日*
*更新使用信息并添加插图
*更好的文档
<0.1
--
*发布日期:2017年12月20日*
*首次发布