⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gauss.h

📁 高斯混合模型C++版本
💻 H
字号:
#if !defined _GAUSS_H_
#define _GAUSS_H_
#include "math.h"
#ifndef PI
#define PI 3.141592653589793115997963468544185161590576171875
#endif
float ComputeUniModeGauss(float* vect, float* mu, 
						  float* inv_var, float log_var_val, int vect_size);
float ComputeGaussMixture( float* vect, float* mu, 
						  float* inv_var, float* log_var_val, 
						  int vect_size, float* weight, int num_mix );
void GaussEM(float **samples, int num_samples, int vec_size, \
		int num_cluster, int *cluster_index,int* num_samples_in_clusters,\
		float *means,float* delta,int maxIter);
void EM(const float **samples, int num_samples, int vec_size, \
		int num_cluster, int *cluster_index,int* num_samples_in_clusters,\
		float *means,float* delta,int maxIter);

float GetPostProb(float* vect,float* mu,float* var,int vec_size);
float GetLogProb(float* vect,float* mu,float* vars,int vec_size);
//可以用 1/squareDistance 转换为相似度 
template<class T1,class T2>
T1 SquareDistance(T1* a,T1* b,T2* delta,int dim){
	T1 dist=0.0;
	T1 temp;
	for(int i=0;i<dim;++i){
		temp=a[i]-b[i];
		T1 deno = delta[i];
		if(deno < 1e-20) deno = 1e-20;	//important: don't temp*temp/0  
		dist+=(temp*temp)/deno; //delta[i] 是平方差
	}
	return sqrt(dist);
}
#endif	!defined _GAUSS_H_
						  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -