天天看點

GaussianMixture API 高斯混合

<span style="font-size:24px;">public class GaussianMixture extends ScoreCachingSenone
注意此是多元的混合高斯,混合高斯中的每一個高斯都是多元的。混合高斯中的每一個高斯函數的輸入x都是一樣的,我們把輸入的數組中的每一項代表的是多元空間中的一個次元,那麼此數組的長度就就代表了多元空間的次元,輸入x就是我們所輸入的特征矢量(數組)。我們所計算的得分就是密度函數給定x下的多元高斯密度函數的輸出值,混合高斯的得分就是其各個高斯函數的的得分的和。所謂的senone是為一個接口,而此類實作了此接口,在程式設計中一個senone可以代表了實作此接口的所有類或對象。我們應該把senone對應具體環境下的實作了此接口的對象。
在數學上代表的就是有多個高斯函數組成的混合高斯。
代表一個簡單senone的具體實作,一個簡單的senone是一個機率密度函數的集合,此類為一個混合高斯的實作。
所有的得分和權重都是在log域中的。
本的屬性:
在一個senone中的資料元素也許會被其他的senone所共享,是以不需要被重寫。
private float[] logMixtureWeights;為混合高斯中各個高斯的權值。此用來存儲權中用。
private MixtureComponent[] mixtureComponents;為混合高斯中的各個高斯,用來存儲高斯函數。
private long id;此混合高斯的id,從id可以得到此混合高斯。
private LogMath logMath;為logmath,主要用在轉換到log域,進行相應的計算。
本類的構造方法:
public GaussianMixture(LogMath logMath, float[] logMixtureWeights,MixtureComponent[]mixtureComponents, long id);給定參數來建立此類對象。
本類的方法:
public void dump(String msg);列印出此高斯混合對象。
public long getID();獲得此混合高斯senone的id。
public String toString();把此類對象轉換從字元串輸出。
public float calculateScore(Data feature);計算此混合高斯對象得分,此得分為各個混合高斯中的各個高斯函數的值即得分的和。即混合高斯函數中的所有高斯函數的得分和,高斯函數的得分為此高斯函數的在特定輸入x下的密度函數的值。
public float[] calculateComponentScore(Data feature);計算的是混合高斯中的各個高斯的得分,把所有得分存入數組中傳回。注意,混合高斯中各個高斯函數的輸入特征矢量都是一樣的,其次元也一樣。
  public MixtureComponent[] getMixtureComponents();得到的是組成此混合高斯的所有高斯。放入混合組成數組中傳回。
public int dimension();傳回的是模拟特征空間的次元,即輸入特征矢量的長度。特征矢量中的每一個項即為一維,長度就是是次元。
public int numComponents();傳回的是混合高斯中的高斯函數的個數。即此混合高斯由多少個高斯函數組成。
public float[] getComponentWeights();傳回的是每個高斯線上性域内的權值。即組成混合高斯的各個高斯的線上性域内的權重。
public float getLogComponentWeight(int index);傳回在混合高斯中的指定位置的log域的高斯函數。</span>
           

繼續閱讀