📄 gaussian.h
字号:
#pragma once
#include "gmm/clust_defs.h"
class CGaussian
{
public:
CGaussian(void);
~CGaussian(void);
// 从文件中导入GMM模型,path为文件目录,返回是否装载成功
bool LoadModel(const char *path);
// 将GMM模型导出文件,path为文件目录,返回是否保存成功
bool SaveModel(const char *path);
// 设置GMM的高斯数目,clusterClass为聚类后的数目,若值为0则表示自动确定,maxClass为初始化时的最大类别数
void SetClass(int clusterClass, int maxClass);
// 设置协方差矩阵的类型,isFull为false表示为对角矩阵,true表示为全矩阵
void SetCovarianceType(bool isFull);
// 设置GMM的数据向量的维数,dimension为维数
void SetDimension(int dimension);
// 根据给定的数据训练GMM,pSample为数据块的指针,number为数据的数目
void TrainSample(double **pSample, int number);
// 获得训练后的GMM的高斯维数
int GetClass();
// 获得数据向量的维数
int GetDimension();
// 获得数据出现的概率的log值
double GetLogProbability(double *pSample);
// 获得各维高斯的权重
double GetPi(int index);
// 获得各维高斯的均值
double *GetMean(int index);
// 获得各维高斯的协方差矩阵
double **GetCovariance(int index);
// 设置各维高斯的权重
void SetPi(int index, double pi);
// 设置各维高斯的均值
void SetMean(int index, double *mean);
// 设置各维高斯的协方差矩阵
void SetCovariance(int index, double **covariance);
private:
// 初始化
void Initialize();
// 清空
void Clear();
private:
struct SigSet m_model;
int m_clusterClass, m_maxClass;
bool m_isFull;
int m_dimension;
bool m_classInitialize;
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -