簡體   English   中英

scikit-learn高斯混合模型集基於高斯均值的預測輸出

[英]scikit-learn Gaussian Mixture Model set prediction output based on Gaussian's mean

我正在使用GMM來找出2個重疊的高斯。 一個是信號,另一個是背景。 背景始終具有比信號低的值和均值。 在大多數情況下, gmm.means_的順序為[lower_mean,Higher_mean],這使其將0預測為背景,將1預測為信號。 有時,均值的順序為[higher_mean,lower_mean],這使得GMM可以將其預測為信號0和噪聲1(與我想要的相反)。 我希望平均值較低的高斯為背景(0),平均值較高的高斯為signal(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

Stauffer和Grimson的文章“用於實時跟蹤的自適應背景混合模型”討論了一種啟發式方法,用於識別GMM的哪些組件與背景相對應。 他們建議按w / sigma的值對高斯進行排序(w是混合權重,sigma是其標准差)。 並且前k個應該是背景的。 如何選擇k取決於每個問題,並將在本文中進行討論。

但這僅是兩個高斯的情況,也許您可​​以檢查w / sigma最高的高斯分量是否始終對應於同一類。

更詳細一點:在那篇論文中,sigma是一維高斯的std。 在您的情況下,您似乎具有N維高斯。 在這種情況下,您可以將方差的行列式取為1/2的冪,而不是sigma。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM