GameMale
登陆 / 注册 搜索

USERCENTER

SEARCHSITE

搜索

查看: 2978|回复: 23
收起左侧

[技术交流] 【Python】【原创】马尔可夫链与马尔可夫性质

[复制链接] |关注本帖

驯化腐化龙幼崽质量效应三部曲箭术卷轴魔法石碑冒险用绷带神秘的红茶黄色就是俏皮海盗弯钩

     楼主| 白冥 发表于 2025-1-30 03:02:06 | 显示全部楼层 |阅读模式 |取消关注该作者的回复


    目录      
    • 概述
    • 主要功能
    • 类结构与方法
    • 源代码
    • 主要方法
    • 示例代码

    概述      

            马尔科夫链(Markov Chain)是一种数学模型,描述了一个系统在离散时间内从一个状态转移到另一个状态的过程。在马尔科夫链中,每个状态的转移概率仅与当前状态有关,而与过去的历史无关。
            本帖所提供的代码均由本人编写。

    主要功能      
            1)路径生成(随机游走):基于当前状态和转移概率进行多次随机游走,生成可能的状态转移路径。可以用于模拟随机过程,如网页浏览的跳转行为、社交网络的传播过程等。
            2)状态预测:根据初始状态和时间步数,预测马尔科夫链在未来某个时间点可能处于的状态分布。可以用于金融市场预测、天气预测等问题,通过预测未来状态的概率分布来制定决策。


    类结构和方法      修改次数1
             Markov_chain
                ├ __init__ 方法
                ├ _add_states 方法
                ├ _build_P 方法
                ├ random_walk 方法
                └ predict 方法
            Matrix_Operations
                ├ _mul 方法
                └ _pow 方法

    源代码      修改次数5
        Markov_chain 类:Markov_chain 类

        Matrix_Operations类:Matrix_Operations 类

    主要方法      修改次数2
    1)__init__(self, edges: List[Tuple[str, str, float]])
            此方法用于初始化一个马尔科夫链对象。它接收一个包含转移概率的边列表  edges ,并根据该列表构建状态集合和转移矩阵。
            ○ edges :一个列表,包含若干元组  (state_0, state_1, cpd) ,其中  state_0  和  state_1  是状态, cpd  是从  state_0  转移到  state_1  的条件概率。


    2) _build_P(self, edges, states)
            此方法用于根据边列表和状态集合构建转移矩阵  P 。在此过程中,方法还会检查每个状态的出度和条件概率的有效性。

            ○ P : 转移矩阵描述了在一个N项有限状态空间 S 上的马尔可夫链 {Xₜ},它的每一项都是一个表示概率的非负实数,其中每一行求和为1。即如果在一个时间步长t→t+1内,Xₜ=sᵢ,sᵢ,sⱼ∈S,从sᵢ转移到sⱼ的条件概率pᵢⱼ = p(Xₜ₊₁=sⱼ | Xₜ=sᵢ),则P₍ₜ₎₍ₜ₊₁₎(以下简写为P)的第i行第j列由p(Xₜ₊₁=sⱼ | Xₜ=sᵢ)给出。
            ○ 无记忆性(马尔可夫性质):
                    如果学过我上一贴关于贝叶斯网络的坛友都知道,若一个随机变量X的父级变量Pa(X)存在,那么它与它的非后代变量Non-desc(X)条件独立,即X⊥Non-desc(X) | Pa(X)。马尔可夫链{Xₜ}可以看作一种特殊的贝叶斯网络,任意一个随机变量Xₜ₊₁∈{Xₜ},它的父级Pa(Xₜ₊₁)=Xₜ,它的非后代Non-desc(Xₜ₊₁)=Xₜ₋₁, Xₜ₋₂…, X₀。
    (马尔可夫链可以看作一种单链贝叶斯网络)
                    即在一个时间步长t→t+1内,在链中给定随机变量Xₜ,则Xₜ₊₁与Xₜ之前的所有变量F(Xₜ)都是条件独立的,记作Xₜ₊₁⊥F(Xₜ) | Xₜ,其中F(Xₜ)=Non-desc(Xₜ₊₁):
    P(Xₜ₊₁ | Xₜ, F(Xₜ)) = P(Xₜ₊₁ | Xₜ)。
                    由于马尔可夫链过于出名,这种无记忆性也被称为马尔可夫性质。


    3) random_walk(self, state: str, time: int)
            ○ 随机游走:随机游走是由一连串轨迹(trajectory)组成,它的每一个微小轨迹都是随机的。因此,绝大多数可见的随机游走,都可以看成马尔可夫链模型或具有马尔可夫性质的类似模型,比如动物的觅食路径、天气的连续变化、股票的涨跌趋势、赌徒的钱包状况,乃至无处不在的布朗运动也是马尔可夫性质的(扩散作用的布朗运动除外)。


    4) predict(self, state: str, time: int)
            ○ 状态分布:
                    由于随机游走是马尔可夫性质的,因此事实上我们无从同时知道当前状态与将来状态,即当前状态与将来状态是条件独立的。
                    然而我们确实需要做到对将来状态的预测,就如古人所说的“未雨绸缪”一样,我们需要知道未来大概率要发生什么。
                    任何状态开始,随机游走一步,都相当于一个状态的One-hot向量右乘一个转移矩阵,结果是它的状态分布,即vₛₜₐₜₑP=b₁。因此,对它的每一次随机游走,都等价地右乘一个P,则对于任意k(k∈N*),都有bₖ=vₛₜₐₜₑPᵏ,代表k步随机游走后它的状态分布,||bₖ||=0,bₖ=(x₁,x₂,x₃,…xɴ),0≤xᵢ≤1(i=1,2,3,…,N)。


    示例代码      



    1. edges = [
    2.         ("A", "A", 0.9),
    3.         ("A", "B", 0.1),
    4.         ("B", "A", 0.5),
    5.         ("B", "C", 0.5),
    6.         ("C", "D", 0.8),
    7.         ("C", "G", 0.2),
    8.         ("D", "E", 0.4),
    9.         ("D", "F", 0.6),
    10.         ("E", "B", 0.2),
    11.         ("E", "C", 0.4),
    12.         ("E", "D", 0.4),
    13.         ("F", "G", 1.0)
    14. ]

    15. # 创建马尔科夫链对象
    16. markov_chain = Markov_chain(edges)

    17. # 执行随机游走
    18. path = markov_chain.random_walk("A", 10)
    19. print("Random walk path:", path)

    20. # 进行状态预测
    21. prediction = markov_chain.predict("A", 5)
    22. print("Prediction after 5 steps:", prediction)
    复制代码

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x

    评分

    参与人数 1堕落 +1 收起 理由
    三分春色描来易 + 1 很给力!

    查看全部评分

      收起(4)

    本帖被以下淘专辑推荐:

    • · 技术|主题: 13, 订阅: 0
    回复

    使用道具 举报

    守护者三角头钢铁勇士弯刀堕落之舞风雪之家魔法迸发轻语火玛瑙裸体克里斯

      回复

      使用道具 举报

      火玛瑙鎏彩万幢月亮提灯达拉然秋之歌男色时代美恐:新的开始苏醒的格罗姆织好的布料

        回复

        使用道具 举报

        超能留声机【新手友好】昆進生金蛋的鹅揄人者冠冕灵魂之椅涅槃龙衔金戒『草莓乳酪』辉光心相元石童年的蛋

          回复

          使用道具 举报

          猫咪合唱团(夏日)果体76圣甲虫秘典小镇的站台新神的赐福【新春限定】果体 隆『召唤好运的角笛』裸体克里斯一国之主凯登‧阿兰科

            回复

            使用道具 举报

            【圣诞限定】心心念念小雪人吃饱金币的Doge被释放的灵魂【新春限定】果体 隆業火死鬥男巫之歌虚空之海的鲸卡利亚权杖诺曼底号

              现在各种专业都有计算机相关的必修或者选修课程惹
              回复

              使用道具 举报

              炙热的格拉迪欧拉斯【夏日限定】夏日的泰凯斯永远的克叔性感男神GM保加利亚妖王自定义男从Homunculus猫咪合唱团(夏日)小狮欢舞小小舞台

                这次真的是连标题都没看懂了
                回复

                使用道具 举报

                『伊黎丝的赞美词』【新春限定】果体 隆『落樱缤纷』里昂‧S‧甘乃迪闪耀的魔仙棒岛田源氏杰西·麦克雷传奇超人

                  回复

                  使用道具 举报

                  裸体克里斯鎏金魔典【新春限定】果体 隆圣甲虫秘典小镇的站台新神的赐福永远的守护者永远的克叔凯登‧阿兰科史莱姆牧场

                    回复

                    使用道具 举报

                    海盗弯钩腐化龙蛋荒野大镖客:救赎 II五花八门版块GM論壇榮譽勛章阿列克西欧斯(Alexios)『狄文卡德的残羽』罗根龙血之斧

                      哇塞,看不懂,但十分震撼,佩服,大佬!
                      回复

                      使用道具 举报

                      雾都血医『狄文卡德的残羽』十字军护盾破旧打火机林中松鼠伪造的红石赫敏·格兰杰大恶魔

                        回复

                        使用道具 举报

                        鸿蒙方舟雾港捞月霉运小精灵[红]我的天使『钟楼日暮』终归一人至尊巴哈姆特You Can Pet Blaidd炽焰咆哮虎官复原职

                          回复

                          使用道具 举报

                          『原味焦糖』琴瑟仙女·娑娜汤姆·赫兰德『不败之花』Drover

                            大学选修过python课但是完全不懂,痛苦的复习记忆涌了上来,还好最后被捞低分飘过
                              收起(5)
                            回复

                            使用道具 举报

                            丛林的鸟飞走了最终幻想XIV驯化红龙幼崽香喷喷的烤鸡社畜专用闹钟人鱼之泪阿帕茶GM論壇進階勛章

                              回复

                              使用道具 举报

                              GM論壇榮譽勛章海盗弯钩驯化红龙幼崽永亘环寻觅森林羊男

                                回复

                                使用道具 举报

                                最终幻想XIV守望者指挥官徽章圣诞有铃GM論壇榮譽勛章寶可夢 Pokémon

                                  我的妈,看到代码之后感觉基因被唤醒了(头大)
                                  楼主好厉害,感觉IT行业内卷的风浪已被证实.jpg
                                  回复

                                  使用道具 举报

                                  没有梦想的咸鱼月下之誓『大元素使』涅槃无光余烬葛莱分多猫咪合唱团(夏日)

                                    还记得乌克兰战争刚开始的时候,隔壁一个老师为了抵制俄罗斯拒绝讲马可夫链,我怀疑他只是懒
                                    回复

                                    使用道具 举报

                                    40x43 隐形➀『落樱缤纷』男巫之歌超人都铎王朝丹·雷诺斯王者之盾永远的克叔【夏日限定】夏日的泰凯斯鎏彩万幢

                                      回复

                                      使用道具 举报

                                      炉石与家猫咪合唱团(夏日)盈满心相元石法师I· 学识之章『召唤好运的角笛』雾港捞月鎏彩万幢男巫之歌女巫之路虚空之海的鲸

                                        回复

                                        使用道具 举报

                                        猫咪合唱团(夏日)『钟楼盐水棒冰』纯真护剑 · 这把剑守护每个孩子无论他有没有被神选中『不败之花』裸体克里斯和你一起飞行的皮卡丘『落樱缤纷』霉运小精灵[红]猫咪点唱机十年一梦

                                          回复

                                          使用道具 举报

                                          『领甜甜圈』艾吉奥岛田半藏诺克提斯·路西斯·伽拉姆萨菲罗斯岛田源氏BIG BOSS康纳/ConnorDoc普隆普特·阿金塔姆

                                            回复

                                            使用道具 举报

                                            您需要登录后才可以回帖 登录 | 立即注册

                                            本版积分规则

                                            关闭

                                            站长公告上一条 /1 下一条

                                            文字版|手机版|小黑屋|GameMale

                                            GMT+8, 2026-8-7 15:14 , Processed in 0.185012 second(s), 155 queries , Redis On.

                                            Copyright © 2013-2026 GameMale

                                            All Rights Reserved.

                                            快速回复 返回列表