當前位置:
首頁 > 最新 > 理解高斯混合模型

理解高斯混合模型

理解高斯混合模型一:概述

高斯混合模型(GMM)在圖像分割、對象識別、視頻分析等方面均有應用,對於任意給定的數據樣本集合,根據其分布概率, 可以計算每個樣本數據向量的概率分布,從而根據概率分布對其進行分類,但是這些概率分布是混合在一起的,要從中分離出單個樣本的概率分布就實現了樣本數據聚類,而概率分布描述我們可以使用高斯函數實現,這個就是高斯混合模型-GMM。

二:數學原理

這種方法也稱為D-EM即基於距離的期望最大化。

三 演算法步驟:

初始化變數定義-指定的聚類數目K與數據維度D

初始化均值、協方差、先驗概率分布

迭代E-M步驟

E步計算期望

M步更新均值、協方差、先驗概率分布

檢測是否達到停止條件(最大迭代次數與最小誤差滿足),達到則退出迭代,否則繼續E-M步驟

4. 輸出最終分類

四:代碼詳解

計算單個樣本的先驗概率分布

public double getProbability(double[] sample) { double p = 0; for (int i = 0; i

每個維度的概率分布

/** * Gaussian Model -> PDF * @param x - 表示採樣數據點向量 * @param j - 表示對對應的第J個分類的概率密度分布 * @return - 返回概率密度分布可能性值 */ public double getProbability(double[] x, int j) { double p = 1; for (int d = 0; d

參數初始化步驟

private void initParameters(double[] data) { // 隨機方法初始化均值 int size = data.length; for (int i = 0; i

這裡初始中心均值的方法我是通過隨機數來實現,GMM演算法運行結果跟初始化有很大關係,常見初始化中心點的方法是通過K-Means來計算出中心點。大家可以嘗試修改代碼基於K-Means初始化參數,我之所以選擇隨機參數初始,主要是為了方便大家理解!

完整源代碼可以從作者博客獲取:世間最容易的事是堅持。最難的事也是堅持!

關注【OpenCV學堂】

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 推酷 的精彩文章:

時下流行的側邊欄導航到底好不好用?
我來談談PHP和JAVA的區別
小團隊中人人都要會用點Docker
excel vba 實現跨表單 搜索-顯示搜索行記錄搜索歷史

TAG:推酷 |

您可能感興趣

理解模板引擎
理解軟體設計模式
搜狗開源業內最全「閱讀理解工具集合」,助力研發人員快速構建高效模型
理解權益證明安全模型的原理
瑪氏經典圖形理解題
閱讀理解得分超越人類:谷歌推出最強預訓練語言理解模型BERT
深入淺出理解A3C強化學習
理解智能合約在區塊鏈交易中的作用
價值管理:理解組織績效管理流程
刷新中文閱讀理解水平,哈工大訊飛聯合發布基於全詞覆蓋中文BERT預訓練模型
「蓋亞之謎」的合理解釋
資料庫事務理解
該如何理解物理學中的重整化方法
悅納教改趨勢,理解歷史學科核心素養
雅斯貝爾斯對有限性的理解
概念解析:深入理解人工智慧和機器學習
庫茲馬與科比合影:理解努力付出的含義
構建藝術—工藝新理解
什麼是MAP?理解目標檢測模型中的性能評估
深入理解JVM—JVM內存模型