gmmcGaussianNumEstimate
GMM training and test, w.r.t. varying number of mixtures
Contents
Syntax
- gmmcData=gmmcGaussianNumEstimate(DS, TS)
- gmmcData=gmmcGaussianNumEstimate(DS, TS, gmmcOpt)
- [gmmcData, recogRate1, recogRate2, validTrialIndex]=gmmcGaussianNumEstimate(...)
Description
[gmmcData, recogRate1, recogRate2, validTrialIndex]=gmmcGaussianNumEstimate(DS, TS, gmmcOpt)
- DS: training set
- TS: test set
- gmmcOpt.arch.gaussianNum: an matrix indicating numbers of Gaussian components, where each column is the number of Gaussian components for each class during a trial
- gmmcOpt.arch.covType: type of covariance matrix, 1: identity times a constant, 2: diagonal, 3: full
- gmmcOpt.train: parameter for training GMM
- gmmcData: GMM parameters
- gmmcData(i): in which class j has gmmcOpt.arch.gaussianNum(j, i) gaussians
- gmmcData(i).class(j): gmm of class j at case i
- gmmcData(i).class(j).gmmPrm(k): gaussian k of class j at case i
- gmmcData(i).class(j).gmmPrm(k).mu: mean vector
- gmmcData(i).class(j).gmmPrm(k).sigma: covariance matrix
- gmmcData(i).class(j).gmmPrm(k).w: weight
- recogRate1: inside-test recognition rate
- recogRate2: outside-test recognition rate
- validTrialIndex: Actually valid index for
- gmmcOpt.arch.gaussianNum. (We need to have this output
- parameters since sometimes we are given a large number of mixtures which cannot be used for GMM training at all.)
Example
[DS, TS]=prData('nonlinearSeparable'); gmmcOpt=gmmcTrain('defaultOpt'); gmmcOpt.arch.gaussianNum=1:10; gmmcOpt.arch.covType=1; gmmcOpt.train.maxIteration=50; plotOpt=1; [gmmcData, recogRate1, recogRate2, validTrialIndex]=gmmcGaussianNumEstimate(DS, TS, gmmcOpt, plotOpt); [rr, index]=max(recogRate2); figure; gmmcPlot(TS, gmmcData(index), '2dPdf'); figure; gmmcPlot(TS, gmmcData(index), 'decBoundary');
DS data count = 250, TS data count = 250 DS class data count = [150 100] TS class data count = [150 100] 1/10: No. of Gaussian = [1;1] ===> inside RR = 63.2%, outside RR = 62.4% 2/10: No. of Gaussian = [2;2] ===> inside RR = 95.2%, outside RR = 92.8% 3/10: No. of Gaussian = [3;3] ===> inside RR = 96.8%, outside RR = 96% 4/10: No. of Gaussian = [4;4] ===> inside RR = 96.8%, outside RR = 96.4% 5/10: No. of Gaussian = [5;5] ===> inside RR = 97.2%, outside RR = 96% 6/10: No. of Gaussian = [6;6] ===> inside RR = 96.8%, outside RR = 95.2% 7/10: No. of Gaussian = [7;7] ===> inside RR = 96.8%, outside RR = 95.2% 8/10: No. of Gaussian = [8;8] ===> inside RR = 96.8%, outside RR = 94.8% 9/10: No. of Gaussian = [9;9] ===> inside RR = 96.8%, outside RR = 95.2% 10/10: No. of Gaussian = [10;10] ===> inside RR = 98%, outside RR = 94.8%
![](gmmcGaussianNumEstimate_help_01.png)
![](gmmcGaussianNumEstimate_help_02.png)
![](gmmcGaussianNumEstimate_help_03.png)