<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>
GaussianMixture API 高斯混合
最新推荐文章于 2024-06-05 19:44:39 发布