2014-10-20 39 views
2

我試圖使用expectation maximization approach將一些數據擬合到混合模型中。在Matlab中,代碼如下什麼是scipy等價於matlab的`mle`函數?

% mixture model's PDF 
mixtureModel = ... 
    @(x,pguess,kappa) pguess/180 + (1-pguess)*exp(kappa*cos(2*x/180*pi))/(180*besseli(0,kappa)); 

% Set up parameters for the MLE function 
options = statset('mlecustom'); 
options.MaxIter  = 20000; 
options.MaxFunEvals = 20000; 

% fit the model using maximum likelihood estimate 
params = mle(data, 'pdf', mixtureModel, 'start', [.1 1/10], ... 
      'lowerbound', [0 1/50], 'upperbound', [1 50], ... 
      'options', options); 

data參數是浮體1-d載體。

我想知道如何在Python中實現等效計算。我看着scipy.optimize.minimize,但這似乎不是Matlab的mle的直接替代品。

我有點失落和不知所措,有人可以點我在正確的方向(最好有一些示例代碼?)

提前感謝非常感謝!

編輯:在此期間,我發現this,但我仍然寧願丟失(1)這似乎主要集中在混合高斯模型(這我的是不是),(2)我的數學技能嚴重缺乏。這就是說,我會高興地接受一個答案,闡明這個筆記本如何與我的具體問題相關!

回答

1

這是一個混合模型(不是混合模型)的統一和馮米斯分佈的參數,你試圖推斷使用直接最大似然估計(不EM,儘管這可能更合適)。如果你在互聯網上搜索,你可以找到關於這個確切問題的論文。 SciPy沒有任何與matlab的fmincon一樣明確的選擇,它在代碼中用作它的默認選項,但您可以尋找允許參數綁定的scipy優化方法。 scipy接口與matlab的mle不同,你需要在scipy最小化函數的'args'參數中傳遞數據,而pguess和kappa參數需要用長度爲2的參數數組表示。

0

相信scikit學習工具包有你需要的東西:

http://scikit-learn.org/stable/modules/generated/sklearn.mixture.GMM.html

高斯混合模型

表示高斯混合模型概率分佈。該類允許對GMM分佈的參數進行簡單的評估,採樣和最大似然估計。

初始化參數,使得每個混合分量具有零均值和身份協方差。

+0

不幸的是,我試圖擬合* *不*高斯的混合模型... – blz 2014-10-24 15:18:18

相關問題