【发布时间】:2015-10-01 06:56:29
【问题描述】:
我想将KDE 与Gaussian Kernel 一起使用。如果我是正确的,所有 f(x) 的总和必须是 1(〜舍入)?
我的实现如下所示:
float K( float const& val)
{
const float p=1.0 / std::sqrt( 2.0 * M_PI);
float result = 0.5 * (val*val);
result = p * std::exp(- result);
return result;
};
std::vector< std::pair<float, float> kde( float *val, int len float h)
{
std::vector< std::pair<float, float>> density( len );
const float p = 1.0 / (h * len );
for(int r=0;r<len;r++)
{
float sum = 0;
for(int i=0;i<len;i++)
sum += k( (val[r] - val[i]) / h );
density[r] = std::make_pair( val[r], p*sum );
}
return density;
}
我选择了h > 0。我对 p*sum 是值 val[r] 的概率是否正确?所有概率的总和 > 1(但对我来说看起来不错)。
【问题讨论】:
标签: c++ c gaussian kernel-density probability-density