📄 gauss.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 + -