问题标签 [mixture]

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 投票
0 回答
554 浏览

matlab - nlinfit 似乎比 fitgmdist 更适合正常混合

我有一个由大约 200 万个样本组成的数据向量,我怀疑这些样本是两个高斯的混合。我尝试使用 matlab 的 fitgmdist 将数据 Data 拟合到混合物中。

从直方图:

使用 fitgmdist:

使用 fitgmdist 混合结果:wts = [0.6780, 0.322], mu = [-7.6444, -9.7831], sig = [0.8243, 0.5947]

接下来我尝试使用 nlinfit:

使用 nlinfit 混合结果:wts = [0.6349, 0.3651], mu = [-7.6305, -9.6991], sig = [0.6773, 0.6031]

蓝色:数据直方图,红色:非线性拟合,黑色:Matlab fitgmdist

似乎非线性拟合(红色曲线)直观地比“fitgmdist”(黑色曲线)更接近直方图(蓝色曲线)。即使我使用更精细的直方图,例如使用 100,000 个 bin,结果也是相似的。

这种差异的根源是什么?

后来补充:当然人们不会期望结果是相同的,但我希望两次拟合的视觉质量具有可比性。

0 投票
0 回答
948 浏览

r - 在 R 中使用 flexmix 混合泊松分布

我正在尝试按照以下代码在 R 中使用 flexmix 包来拟合 3 个泊松分布的混合物:

我得到以下结果:

k=3我在flexmix电话中提到。为什么摘要中只有两个组件?另外,为什么对数似然的df只有3?

我试图用一些随机数据复制上述内容,如下所示:

我得到以下输出:

在这里,我可以看到 3 个分量,自由度也是 5。那么,为什么在第一种情况下我没有得到类似的结果?

在第一种情况下,我将拟合模型的均值和方差与数据的均值和方差进行了比较。以下代码给出了模型参数 -

这给出了以下输出 -

现在我们可以从拟合模型 =p1*m1+p2*m2= 0.796*exp(0.0962269)+0.204*exp(2.2364497) = 2.785851 计算 - 平均值,这非常接近数据的平均值(即 mean(zz[,1 ])),即 2.778745。

拟合模型的方差 = p1*m1+p2*m2+p1*p2*(m1-m2)^2=0.796*exp(0.0962269)+0.204*exp(2.2364497)+0.796*0.204*(exp(0.0962269)-exp (2.2364497))^2 =13.86233,它远小于数据方差(即 var(zz[,1]),即 23.4328。

如此直观地,似乎要解释方差,我们应该使用两个以上泊松分布的混合。

请让我知道你的想法

0 投票
1 回答
2493 浏览

r - 使用 ggplot2 在 R 中绘制高斯混合

我正在用高斯混合来近似分布,并且想知道是否有一种简单的方法可以使用 ggplot2 以一种很好的方式自动将整个(一维)数据集的估计内核密度绘制为组件密度的总和:

使用单组分密度绘制的完整数据密度

鉴于以下示例数据,我在 ggplot2 中的方法是手动将子集密度绘制成缩放后的整体密度,如下所示:

ggplot2 绘图

请注意,这不适用于比例尺。当您缩放所有 3 个密度或根本没有密度时,它也不起作用。所以我无法复制上面的情节。

此外,我无法自动生成此图,而无需手动进行子集化。我尝试使用 position = "stacked" 作为 geom_density 中的参数。

我通常每个数据集大约有 5-6 个组件,因此可以手动设置子集。但是,我希望每个组件密度有不同的颜色或线型,它们显示在 ggplot 的图例中,因此手动执行所有子集会大大增加工作量。

有任何想法吗?谢谢!

0 投票
2 回答
1926 浏览

python - 如何衡量高斯混合的性能?

我有一个包含 27211 个样本和 90 个属性的数据集。该数据集没有类标签。我想将高斯混合拟合到数据集,但我不知道如何衡量性能。你能帮助我吗?

0 投票
2 回答
2843 浏览

python - 使用高斯混合检测异常值

我在一个 numpy 数组中的 17 个特征中的每一个都有 5000 个数据点,从而产生一个 5000 x 17 数组。我正在尝试使用高斯混合找到每个特征的异常值,但我对以下问题感到困惑:1)我的 GaussiasnMixture 应该使用多少个组件?2) 我应该将 GaussianMixture 直接拟合到 5000 x 17 的阵列上还是分别拟合到每个特征列上,从而产生 17 个 GaussianMixture 模型?

或者

或者

0 投票
0 回答
974 浏览

python - Tensorflow:高斯混合的 KL 散度

我知道使用 python 和scikit learn,如何计算高斯混合的KL散度,因为它的权重、均值和协方差等参数为np.array,如下所示。

GaussianMixture 使用组件参数初始化 - sklearn

两个 GMM 的 KL-Divergence

但我想知道,使用Tensorflow,有没有办法计算两个高斯混合之间的KL散度,因为它的参数为 Tensor

1)我在Tensorflow中尝试了上面的scikit,但它没有工作,因为Tensorflow在执行会话之前不会给它一个实际值。

2) 有一些 TF 包,但不完全是高斯混合的 KL。 https://www.tensorflow.org/api_docs/python/tf/contrib/distributions/Mixture

https://www.tensorflow.org/api_docs/python/tf/distributions/kl_divergence

任何帮助是极大的赞赏。

后来,我尝试了一个最新的 TF 库,如下所示。

然后我得到了这个错误...... NotImplementedError: No KL(distribution_a || distribution_b) 为distribution_a type Mixture和distribution_b type Mixture注册

我现在很伤心。:(

0 投票
1 回答
414 浏览

python - 条件分布的均值和协方差

我有一个 10000 X 22 维数组(观察 x 特征),我用一个组件拟合高斯混合,如下所示:

然后,我想根据第 87页中的Bishop 模式识别和机器学习方程 2.81 和 2.82 计算前两个特征的条件分布的均值和协方差。我要做的是:

我的问题是,在计算 conditional_mu 和 conditional_cov 时,我得到以下形状:

我期望 conditional_mu 的形状应该是 (1,2) 因为我只想找到前两个特征的平均值。为什么我会为每个观察结果取一个平均值?

0 投票
1 回答
797 浏览

distribution - 将伽马和正态分布的混合拟合到 R 中的数据

我想将伽玛和正态分布的混合拟合到我在 R 中的数据。

数据:

根据我认为(通过查看直方图)的数据,伽马分布和正态分布的混合是最佳候选者。

我使用以下代码使用 fitdistrplus 包中的 fitdist 函数来拟合混合分布:

我已阅读此处发布的问题R - 使用 fitdistrplus 拟合混合分布,但出现以下错误:

我可能不完全理解那里发布的解决方案。如果有人可以提供一些帮助将不胜感激。提前致谢!

0 投票
0 回答
48 浏览

python - 你如何找到由来自 SkLearn 的 GaussianMixture 拟合的分类/类别属性

我有一系列基因表达的数据。我试图在一个或另一个拟合的高斯分布下找到双峰分布和样本分类。您如何从 SkLearn 的拟合 GaussianMixture 中找到分类属性。这就像 r 中 mclust 的分类属性。谢谢!

0 投票
1 回答
1539 浏览

python - Sklearn GaussianMixture

几个月来,我一直在通过一个字符识别和笔迹转录项目为自己学习人工智能。到目前为止,我已经通过实现 CNN、CTC 神经网络成功地使用了 Keras、Theano 和 Tensorflow。

今天,我尝试使用高斯混合模型,这是迈向高斯发射隐马尔可夫模型的第一步。为此,我使用带有 pca 缩减的 sklearn 混合来选择具有 Akaike 和贝叶斯信息标准的最佳模型。Aic 的协方差类型为 Full,它提供了一个很好的 U 曲线,而 Bic 的协方差类型为 Tied,因为全协方差 Bic 只给出线性曲线。对于 12.000 个样本,我得到了 Aic 为 60 个 n 分量和 Bic 为 120 个 n 分量的最佳模型。

我的输入图像有 64 个像素,仅代表英文字母的大写字母,26 个类别,编号从 0 到 25。

Sklearn GaussianMixture 的 fit 方法忽略标签, predict 方法将分量的位置(0 到 59 或 0 到 119)返回到关于概率的 n 个分量中。

如何使用 sklearn GaussianMixture 检索列表中字符位置的原始标签?