Skip to content

get_prep_info_class_gmmGetPrepInfoClassGmmGetPrepInfoClassGmmget_prep_info_class_gmmT_get_prep_info_class_gmm๐Ÿ”—

Short description๐Ÿ”—

get_prep_info_class_gmmGetPrepInfoClassGmmGetPrepInfoClassGmmget_prep_info_class_gmmT_get_prep_info_class_gmm โ€” Compute the information content of the preprocessed feature vectors of a GMM.

Signature๐Ÿ”—

get_prep_info_class_gmm( class_gmm GMMHandle, string Preprocessing, out real InformationCont, out real CumInformationCont )void GetPrepInfoClassGmm( const HTuple& GMMHandle, const HTuple& Preprocessing, HTuple* InformationCont, HTuple* CumInformationCont )static void HOperatorSet.GetPrepInfoClassGmm( HTuple GMMHandle, HTuple preprocessing, out HTuple informationCont, out HTuple cumInformationCont )def get_prep_info_class_gmm( gmmhandle: HHandle, preprocessing: str ) -> Tuple[Sequence[float], Sequence[float]]

Herror T_get_prep_info_class_gmm( const Htuple GMMHandle, const Htuple Preprocessing, Htuple* InformationCont, Htuple* CumInformationCont )

HTuple HClassGmm::GetPrepInfoClassGmm( const HString& Preprocessing, HTuple* CumInformationCont ) const

HTuple HClassGmm::GetPrepInfoClassGmm( const char* Preprocessing, HTuple* CumInformationCont ) const

HTuple HClassGmm::GetPrepInfoClassGmm( const wchar_t* Preprocessing, HTuple* CumInformationCont ) const (Windows only)

HTuple HClassGmm.GetPrepInfoClassGmm( string preprocessing, out HTuple cumInformationCont )

Description๐Ÿ”—

get_prep_info_class_gmmGetPrepInfoClassGmm computes the information content of the training vectors that have been transformed with the preprocessing given by Preprocessingpreprocessingpreprocessing. Preprocessingpreprocessingpreprocessing can be set to 'principal_components'"principal_components" or 'canonical_variates'"canonical_variates". The preprocessing methods are described with create_class_mlpCreateClassMlp. The information content is derived from the variations of the transformed components of the feature vector, i.e., it is computed solely based on the training data, independent of any error rate on the training data. The information content is computed for all relevant components of the transformed feature vectors (NumComponentsnumComponentsnum_components for 'principal_components'"principal_components" and 'canonical_variates'"canonical_variates", see create_class_gmmCreateClassGmm), and is returned in InformationContinformationContinformation_cont as a number between 0 and 1. To convert the information content into a percentage, it simply needs to be multiplied by 100. The cumulative information content of the first \(n\) components is returned in the \(n\)-th component of CumInformationContcumInformationContcum_information_cont, i.e., CumInformationContcumInformationContcum_information_cont contains the sums of the first \(n\) elements of InformationContinformationContinformation_cont. To use get_prep_info_class_gmmGetPrepInfoClassGmm, a sufficient number of samples must be added to the GMM given by GMMHandleGMMHandlegmmhandle by using add_sample_class_gmmAddSampleClassGmm or read_samples_class_gmmReadSamplesClassGmm.

InformationContinformationContinformation_cont and CumInformationContcumInformationContcum_information_cont can be used to decide how many components of the transformed feature vectors contain relevant information. An often used criterion is to require that the transformed data must represent x% (e.g., 90%) of the data. This can be decided easily from the first value of CumInformationContcumInformationContcum_information_cont that lies above x%. The number thus obtained can be used as the value for NumComponentsnumComponentsnum_components in a new call to create_class_gmmCreateClassGmm. The call to get_prep_info_class_gmmGetPrepInfoClassGmm already requires the creation of a GMM, and hence the setting of NumComponentsnumComponentsnum_components in create_class_gmmCreateClassGmm to an initial value. However, if get_prep_info_class_gmmGetPrepInfoClassGmm is called, it is typically not known how many components are relevant, and hence how to set NumComponentsnumComponentsnum_components in this call. Therefore, the following two-step approach should typically be used to select NumComponentsnumComponentsnum_components: In a first step, a GMM with the maximum number for NumComponentsnumComponentsnum_components is created (NumComponentsnumComponentsnum_components for 'principal_components'"principal_components" and 'canonical_variates'"canonical_variates"). Then, the training samples are added to the GMM and are saved in a file using write_samples_class_gmmWriteSamplesClassGmm. Subsequently, get_prep_info_class_gmmGetPrepInfoClassGmm is used to determine the information content of the components, and with this NumComponentsnumComponentsnum_components. After this, a new GMM with the desired number of components is created, and the training samples are read with read_samples_class_gmmReadSamplesClassGmm. Finally, the GMM is trained with train_class_gmmTrainClassGmm.

Execution information๐Ÿ”—

Execution information
  • Multithreading type: reentrant (runs in parallel with non-exclusive operators).

  • Multithreading scope: global (may be called from any thread).

  • Processed without parallelization.

Parameters๐Ÿ”—

GMMHandleGMMHandlegmmhandle (input_control) class_gmm โ†’ (handle)HTuple (HHandle)HClassGmm, HTuple (IntPtr)HHandleHtuple (handle)

GMM handle.

Preprocessingpreprocessingpreprocessing (input_control) string โ†’ (string)HTuple (HString)HTuple (string)strHtuple (char*)

Type of preprocessing used to transform the feature vectors.

Default: 'principal_components'"principal_components"
List of values: 'canonical_variates', 'principal_components'"canonical_variates", "principal_components"

InformationContinformationContinformation_cont (output_control) real-array โ†’ (real)HTuple (double)HTuple (double)Sequence[float]Htuple (double)

Relative information content of the transformed feature vectors.

CumInformationContcumInformationContcum_information_cont (output_control) real-array โ†’ (real)HTuple (double)HTuple (double)Sequence[float]Htuple (double)

Cumulative information content of the transformed feature vectors.

Example๐Ÿ”—

(HDevelop)


* Create the initial GMM
create_class_gmm (NumDim, NumClasses, NumCenters, 'full',\
                  'principal_components', NumComponents, 42, GMMHandle)
* Generate and add the training data
for J := 0 to NumData-1 by 1
    * Generate training features and classes
    * Data = [...]
    * ClassID = [...]
    add_sample_class_gmm (GMMHandle, Data, ClassID, Randomize)
endfor
write_samples_class_gmm (GMMHandle, 'samples.gtf')
* Compute the information content of the transformed features
get_prep_info_class_gmm (GMMHandle, 'principal_components',\
                         InformationCont, CumInformationCont)
* Determine Comp by inspecting InformationCont and CumInformationCont
* NumComponents = [...]
* Create the actual GMM
create_class_gmm (NumDim, NumClasses, NumCenters, 'full',\
                  'principal_components', NumComponents, 42, GMMHandle)
* Train the GMM
read_samples_class_gmm (GMMHandle, 'samples.gtf')
train_class_gmm (GMMHandle, 200, 0.0001, 0.0001, Regularize, Centers, Iter)
write_class_gmm (GMMHandle, 'classifier.gmm')

Result๐Ÿ”—

If the parameters are valid, the operator get_prep_info_class_gmmGetPrepInfoClassGmm returns the value 2 (H_MSG_TRUE). If necessary an exception is raised.

get_prep_info_class_gmmGetPrepInfoClassGmm may return the error 9211 (Matrix is not positive definite) if Preprocessingpreprocessingpreprocessing \(=\) 'canonical_variates'"canonical_variates" is used. This typically indicates that not enough training samples have been stored for each class.

Combinations with other operators๐Ÿ”—

Combinations

Possible predecessors

add_sample_class_gmmAddSampleClassGmm, read_samples_class_gmmReadSamplesClassGmm

Possible successors

clear_class_gmmClearClassGmm, create_class_gmmCreateClassGmm

References๐Ÿ”—

Christopher M. Bishop: โ€œNeural Networks for Pattern Recognitionโ€; Oxford University Press, Oxford; 1995.

Andrew Webb: โ€œStatistical Pattern Recognitionโ€; Arnold, London; 1999.

Module๐Ÿ”—

Foundation