问题标签 [markov]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2477 浏览

machine-learning - 隐马尔可夫模型:是否有可能随着状态数的增加准确率降低?

我使用 Baum-Welch 算法为越来越多的状态构建了几个隐马尔可夫模型。我注意到在 8 个状态之后,验证分数下降超过 8 个状态。所以我想知道由于某种过度拟合,隐马尔可夫模型的准确性是否会随着状态数量的增加而降低?

提前致谢!

0 投票
1 回答
45 浏览

python - 运行 Python 代码

我对 Python 完全陌生,我正在努力运行一段代码。我已将代码放入 IDLE 并运行它,但它什么也没返回。下面我附上了代码以及应该伴随它的结果。我只是想知道如何从代码中获得结果。希望这真的很容易。

有问题的代码是指网球运动员在所有可能的得分(0-0,15-0,15-15 等)下赢得他的发球局的概率,给定他的平均发球得分百分比。这假定游戏遵循马尔可夫过程,即每个点都独立于所有其他点

这是代码:

https://gist.github.com/JeffSackmann/768862

这是我想去的地方(结果):

https://summerofjeff.wordpress.com/2010/12/03/single-game-win-expectancy-tables/

也许问题不在于代码,而在于变量。如果有人可以帮助我,将不胜感激。

0 投票
5 回答
7910 浏览

python - 创建一个任意大小的矩阵,其中行总和为 1?

我的任务是为任意数量的事件创建一个模拟离散时间马尔可夫链的程序。然而,现在我正在努力的部分是创建正确的随机矩阵来代表概率。右随机矩阵是一个行条目总和为 1 的矩阵。对于给定的大小,我有点知道如何编写执行此操作的矩阵,但是问题是我不知道如何执行此操作对于任意大小。

例如:这是我的 3x3 矩阵代码,以及我得到的输出示例。

http://pastebin.com/4GXpAYTM

但是,我的代码并非每次都有效——在某些情况下,行中的第三个条目为负数,因为前两个条目太大。而且我不知道如何解决这个问题,据我所知,Python 中没有一个函数可以让你生成随机数,这些随机数总和是特定的。

任何帮助表示赞赏。

(请注意,这不是家庭作业问题,它只是为了在我的数学课上获得额外的学分,教授不介意使用外部资源。)

0 投票
1 回答
220 浏览

machine-learning - 马尔可夫链 - 具有“未见”观察的样本的可能性(概率 0)

我有一个大的马尔可夫链和一个样本,我想计算它的可能性。问题是样本中的某些观察或转换不会发生在马尔可夫链中,这使得总可能性为 0(或对数似然 - 无穷大)。不可能使用更多的数据来构建马尔可夫链。我想知道是否有办法仍然有一个有意义的可能性。

我已经尝试过滤掉样本中的这些“未知”观察结果并单独报告它们。但问题是我想将样本的可能性与同一样本的可能性进行比较,但在转换之后。转换后的样本具有不同数量的“未知”观察值。所以我认为我不能比较这两种可能性,因为它们是用不同数量的观察值计算出来的。

有没有办法仍然计算可以比较的有意义的可能性?我正在考虑对样本中观察的概率进行平均,但我找不到任何关于正确的信息。

提前致谢!

0 投票
0 回答
1309 浏览

python - python中的马尔科夫一阶文本处理

我编写了从给定文本文件生成文本的代码。我使用马尔科夫一阶模型。首先从文本文件创建字典。在标点符号('.','?','!')的情况下,它的键是'$'。创建字典后,我从创建的字典中随机生成文本。当它检测到'$'时,它开始新的句子。我的代码如下:

我的文本文件('a.txt')是:

我正在 python 中进行马尔科夫一阶文本处理。它会在我的代码中工作吗?我也不寻求别人的帮助。我相信我犯了一个幼稚的错误!但我无法修复它。

输入: d = createDictionary('a.txt')

打印生成文本(d,50)

输出:随机 4 行中的 1 行。

谁能建议我如何修复此代码以使其正确生成输入的文本?

0 投票
1 回答
861 浏览

java - 马尔可夫链,基于概率的随机文本。爪哇

我正在尝试根据输入文本的重复概率生成 140 个字符的字符串。我已经有一个包含每个有效字符的数组,并且每个字符的数组概率不同。

我已经读到我需要从 0-1 生成一个随机双精度数,但我不知道如何将它与我的数组相关联并生成一个 140 字符的字符串。只需要该方法的帮助,至少需要有关如何执行此操作的说明。

提前致谢。

0 投票
1 回答
808 浏览

r - R - 请在多状态马尔可夫和块引导方面需要帮助

首先,我必须坚持,我对 R 非常陌生,以前从未使用过马尔可夫分析或 Bootstrap。我一直在研究这些问题,但找不到解决方案,所以决定发布这个问题。

我有一个动物运动数据,它由以 1、2、3 等数字编码的不同状态组成。我想运行多状态马尔可夫来产生转移概率矩阵,但因为我的数据包含每个主题的复制(例如,动物 1 测试 3 次,动物 2 测试 3 次,动物 3 测试 4 次),每个受试者包含一个面板数据(时间 0-2)。这是我的数据的示例:

由于每个主题都包含复制,我想在执行 msm 之前运行引导程序以重新采样主题。我查找了运行引导程序和马尔可夫分析的代码,但是在编写脚本为 qmatrix 创建初始值时,它返回了以下错误:

有人可以建议如何解决这个问题吗?此外,我计划使用以下脚本进行引导,但不确定它是否正确以及应该为“l”放置什么。

我的最终目标是获得每个转换的转换概率和 SD 的平均值。请如果有人可以阐明或就如何实现这一目标提出任何建议,我将非常感激。

0 投票
1 回答
1167 浏览

java - 如何在 Java 中实现马尔可夫算法?

我想实现在这里找到的马尔可夫算法,但我没能做到。正如 wiki 解释的那样,它是一个递归函数,用于替换语言中的模式。例如

  • “A”->“苹果”
  • “B”->“包”
  • “S”->“商店”
  • “T”->“该”
  • “商店”->“我的兄弟”
  • “从未使用过”-> .“终止规则”

这些规则必须在以下文本上执行:

“我从 T S 买了一个 B of As。”

规则:

  1. 按从上到下的顺序检查规则,看看是否可以在输入字符串中找到任何模式。
  2. 如果没有找到,则算法停止。
  3. 如果找到一个(或多个),则使用其中的第一个将输入字符串中最左边的匹配文本替换为其替换。
  4. 如果刚刚应用的规则是终止规则,则算法停止。
  5. 转到步骤 1。

我考虑过创建两个类RuleRuleContainer

Rule有 3 个属性:String from、String To 和 Boolean terminating

RuleContainer有一个动态列表,其中包含活动规则和逻辑函数 [我试图创建的那个]。

我已经考虑过 String.replace() 函数,并尝试将其实现为递归函数。

实现马尔科夫算法的最佳方法是什么?

0 投票
1 回答
317 浏览

java - 如何使用变量和标记实现马尔可夫算法?

我一直在尝试实现马尔科夫算法,但我只取得了部分成功。该算法相当简单,可以在这里找到。

但是,我的项目有一个额外的困难,我必须使用包含标记和变量的规则。

变量代表字母表中的任何字母,标记只是一个字符,用作移动变量的参考(它没有实际值)。

此示例复制字符串中的每个字符:

字母:{a,b,c}

标记:{M}

变量:{x}

规则 1:Mx -> xxM

规则 2:xM -> x

规则 3:x -> Mx

输入: abc

abc //我们应用规则 3

Mabc //我们应用规则 1

aaMbc //我们应用规则 1

aabbMc //我们应用规则 1

aabbccM //我们应用规则 2

aabbcc

这是我的递归函数,它实现了仅适用于字符串输入的马尔可夫算法,例如:规则 1:“apple”->“orange”,输入:“apple”。

我不知道如何在这个逻辑中实现变量和标记,所以也许有人可以教育我实现这个逻辑的最佳方式?欢迎任何建议。

如果问题不符合 SO 准则,请在评论中告诉我原因,这样我就不会重复错误。

谢谢你!

GitHub

0 投票
0 回答
84 浏览

shiny - 在 R 中的图表中显示导航

我正在尝试在 R 图中显示导航。时间一或 (t1) 中的当前状态设置为 val$currentstatus 并且 (t2) 中的下一个状态希望根据用户从支票簿中选择的操作显示在图表中。然后我想画一条线来显示这条路径。我写的代码如下

如果下一个位置在替补席内,则应为绿色并连接到先前的状态,如果不在替补席上,则应为红色并连接到先前的状态。此外,我想在两个状态之间的连接线上查看所选操作的名称。此外,我想知道如何更新新位置并将其用于计算下一个时期(t3)的下一个状态等。类似于下图: 导航图