问题标签 [expectation-maximization]
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.
r - 多参数下如何向量化似然计算?
我正在尝试实现伯努利混合,并且想知道如何在不循环的情况下正确地对计算进行矢量化。
我尝试了各种版本的应用,但无法获得所需的输出(dim = c(5,4,2)。我的组件参数应该在列表中而不是矩阵中吗?
python - 在高斯混合模型/期望最大化模型中包括时间依赖性?
我正在处理时间序列数据集,因此在拟合包中的GaussianMixture()
函数时scikit-learn
,我需要使每个特征(时间戳)依赖。但是,在查看源代码后,我没有找到自定义协方差矩阵的参数。
凭借我有限的统计知识,我很好奇如何在 E 步期间修改协方差矩阵以将时间依赖性纳入 GMM 模型。非常感谢。
这是源代码:我要进行的更改是在 estimate_gaussian_parameters() 函数中 https://github.com/scikit-learn/scikit-learn/blob/7389dba/sklearn/mixture/gaussian_mixture.py#L435
perl - Perl 期望最大化 DNA 序列的对数赔率分数
我对这段代码的总体目标是在每个 DNA 序列中找到基序(较小的序列),该序列将根据对数赔率评分矩阵报告最大对数赔率得分。我正在搜索的 .txt 文件如下所示:
.... 等等。
我目前正在研究我的代码的最大化步骤,并且我正在努力计算我的 DNA 序列中一个基序的对数几率得分。我有创建对数赔率评分矩阵的代码 - 请参见以下内容:
现在,我需要计算每个 DNA 序列中基序的对数优势得分。然后,我将遍历序列中所有可能的位置,并找到每个序列的最大分数。未来的工作需要我用最高分数回忆主题,但我还没有尝试过(只是想为这些最高分数提供范围)。
策略:我将创建一个对数赔率分数和最大分数的哈希,以保持每个序列的最大分数作为迭代。为了计算对数赔率分数,我将查看对数赔率评分矩阵的哪个元素与主题中的元素匹配。
当我从代码中取消注释最大化步骤并运行它时,最大化部分不会打印任何内容。我没有收到任何错误,但没有新的打印。我知道我的期望步骤可以简化(我会在它工作后清理所有内容),但我首先专注于这个最大化步骤。我知道最大化代码中有很多缺陷,尤其是在尝试创建对数赔率分数和最大分数哈希值时。任何和所有输入都有帮助!提前感谢您的耐心和建议。如果您需要任何澄清,请告诉我。
numpy - 使用 scipy 库的有界优化
让我们假设一个对数似然函数f(x, y, z) = prob(k0)* log((1-x)^(1-y)) + prob(k1)*log((1-x)^(1-z))
并且存在约束,使得 x、y 和 z 的可能值应位于 0 和 1 之间。目标是最小化函数并返回该最小值处的 x、y 和 z 值。
我尝试使用共轭梯度法 scipy 库。
该方法在第一次迭代中失败。
由于有两个以上的变量,我是否需要提供 Hessian 矩阵?
我也尝试过 Nelder-mead 方法,但它需要很多时间。
此外,更重要的是,该方法不考虑变量的界限,并在某些情况下返回未在界限内的 x、y 和 z 的值。我
在 scipy 或任何其他考虑这种类型的有界优化的包中还有其他方法。请帮忙。
python - 使用 Levenshtein 距离使用 Kmeans/EM 对字符串(文本)进行聚类
我正在尝试使用 Kmeans/EM 对字符串进行聚类。我有一个字符串列表(大约 70 个字符串),我想使用 Levenshtein 相似度度量对它们进行聚类。
所以基本上,我正在尝试在这篇研究论文中实现聚类部分:https ://ieeexplore.ieee.org/document/7765062/ 进行预处理之后。我能够使用 Levenshtein 距离制定相似度矩阵,然后使用层次聚类和光谱聚类对字符串进行聚类,但我无法使用 Kmeans 或 EM 来实现。这是因为在我能够实现的之前的算法中,只有相似度/距离矩阵足以进行聚类。但是在 K-means 和 EM 的情况下,我需要以某种方式以数学上可操作的形式表示文本,因为我们必须找到它们的均值(在 K-means 的情况下)。
我能够找到一些技术来将文本转换为向量,例如:1)词袋 2)TF-IDF 3)doc2vec 或 word2vec
我是否应该使用上述任何方法将每个字符串转换为向量,然后应用 Kmeans?是否有必要将字符串转换为向量才能应用 K-means 或 EM?最后,我必须在 Python 中实现所有内容,因此,使用 Sklearn 中的 Kmeans 不允许我给出我选择的度量或相似度矩阵。我应该怎么办?
注意:我在他们使用 TF-IDF 转换文本的文本上找到了 K-means 的实现。然后应用 Kmeans (euclidian) 但我想使用 Levenshtein。
另请注意:我有一个字符串列表,而不是文本文档,每个字符串大约 20-30 个单词
machine-learning - 提供的模型不是 YellowBrick 中的聚类估计器
我正在尝试使用 YellowBrick 的 KElbowVisualizer 和 SKLearn 的期望最大化算法类:GaussianMixture 为我的数据可视化肘部图。
当我运行它时,我得到标题中的错误。(我也尝试过 ClassificationReport,但也失败了)
我在 YellowBrick 中找不到任何东西来帮助我估计期望最大化的组件数量。
k-means - 使用 Kmeans 初始化 EM-Algorithm
我最近阅读了关于期望最大化 (EM) 的文章,并且不断出现使用 K-Means 初始化 EM 是一个好主意,但我在掌握这个概念时遇到了困难。
据我所知,在使用 kmeans 时,您得到的结果是根据预定义的集群数量的集群质心坐标,那么如何使用它来初始化 EM。为了让事情更清楚,这是我目前正在尝试解决的问题:
我有一个噪声数据点 Y 的数据集,它来自从 8-ASK 集合中提取的样本 X。现在我加载了我的数据集并使用了 kmeans 算法来识别质心,但似乎不知道下一步是什么。我使用的 EM 算法需要参数:质心的初始起始值及其概率分布以及初始均值和方差,但我不明白如何准确获得这些值。
总结一下我的问题基本上是当我在我的数据 Y 上运行他时,我如何计算 kmeans 算法生成的质心的均值、方差和初始分布?
java - 将 Mat 转换为 EM 的一维浮点数组?
我正在尝试将 Python 代码转换为 Java。但是,我无法找到一种方法来创建样本来训练期望最大化,因为它应该是一个具有 2 个值(来自 HSV 颜色空间的 S 和 V)的单通道矩阵,如下所示:
- 第 0 行:S、V
- 第 1 行:S、V
- 第 2 行:S、V
- 第 3 行:S、V
在 Python 中,我能够做到以下几点:
我尝试了以下但没有成功,因为结果不是 aMat
并且我找不到将其转换回来的方法。
有人可以帮我改造垫子吗?
python - MNIST图像数据上的EM算法python
我需要实现 EM 算法以在图像数据(像素)上拟合 GMM。数据以 .mat 文件的形式提供。数据类似于 MNIST 数据集。所以它是一个形状为 784 x 1990 的图像矩阵。有 1990 张图像,矩阵的每一列对应一个大小为 28 x 28 像素的图像(所以 28*28 = 784)。
我在 python 中看到了很多关于 EM 的在线示例,但没有一个用于处理图像。大多数生成如下数据。我应该如何处理这些像素图像向量?我不确定如何重塑它或如何开始这项任务。我是否平均每列的像素?我的目标 X 应该是一个列表还是列表列表?以我的拙见,我认为我需要获取每个黑白图像的 x,y 坐标。
或者像这样,有一个 X 和 Y 来生成散点图:
python - 高斯混合模型的代码是否正确?
我正在学习 GMM 进行颜色分割。我在网上找到了一个很好的资源,其中包含以下 GMM 代码:
现在我的理解是,在 EM 的最大化步骤中,我们必须更新高斯参数(协方差矩阵、高斯的均值和大小(pi_c))在上面给出的代码中,我可以看到 pi_c 和均值(mu)的值正在更新,但我认为协方差矩阵的值没有更新。但是,当我运行代码时,它似乎正在工作(?)。有人可以帮我确定代码是否正确。代码来自以下资源