【问题标题】:scikit-learn Gaussian Mixture Model set prediction output based on Gaussian's meanscikit-learn 高斯混合模型集基于高斯均值的预测输出
【发布时间】:2017-07-24 22:59:13
【问题描述】:

我正在使用 GMM 分离出 2 个重叠的高斯。一个是信号,另一个是背景。背景总是比信号具有更低的值和平均值。大多数时候,gmm.means_ 的顺序是 [lower_mean, Higher_mean],这使得它预测 0 作为背景,1 作为信号。有时,均值的顺序是 [higher_mean, lower_mean],这使得 GMM 将其预测为 0 表示信号,1 表示噪声(与我想要的相反)。我希望具有较低均值的高斯为背景(0),而具有较高均值的高斯为信号(1)。如何将 GMM 结果设置为正确的顺序或如何设置预测输出?

img = cv2.imread(path, -1)
img_flatten = img.flatten().reshape(img.flatten().shape[0],1)

gmm = GaussianMixture(n_components=2, covariance_type='full')
gmm.fit(img_flatten)
pred = gmm.predict(img_flatten) # how can I set the prediction value I want for each Gaussian?

print(np.round(g.means_, 2))
# gives [[  66.31] [ 203.64]] on some images and [[  67.32] [ 306.13]] on other

【问题讨论】:

    标签: python scipy scikit-learn


    【解决方案1】:

    Stauffer 和 Grimson 的文章“用于实时跟踪的自适应背景混合模型”讨论了一种启发式方法来识别 GMM 的哪些组件对应于背景。他们建议按 w/sigma 的值对高斯人进行排序(w 是混合权重,sigma 是它们的标准值)。前k个应该是背景的。如何选择 k 取决于每个问题,并在论文中进行了讨论。

    但它只是两个高斯的情况,也许你可以检查具有最高 w/sigma 的高斯分量是否总是对应​​于同一类。

    更多细节:在那篇论文中,sigma 是一维高斯的标准差。在你的情况下,你似乎有 N 维高斯。在这种情况下,也许您可​​以将协方差的行列式改为 1/2 次方,而不是 sigma。

    【讨论】:

      猜你喜欢
      • 2018-07-16
      • 2013-06-11
      • 2018-11-27
      • 2021-09-30
      • 2017-12-04
      • 2013-04-17
      • 2020-02-24
      • 2012-09-11
      • 2018-08-08
      相关资源
      最近更新 更多