C++ openCV中EM的对数似然输出
我在openCV中使用EM模型,遇到了EM::train输出的对数似然值的困难。我在单独(但相关)数据上训练EM模型,并且对数似然值与数据的绝对值相关联,即当训练值大于100时,EM::train返回强正对数似然值,当训练值小于一个大的负值时,我的理解是,考虑到EM的工作方式,这没有任何意义。 下面是训练模型的代码部分,以防我犯了任何愚蠢的错误(我对opencv很陌生),std::cout确认当训练值大于100时,值大于1,当训练值小于1时,值小于-1 我的问题与这篇文章类似: 除非没有实现DPGMM之类的东西,否则无法使用日志可能性 非常感谢, 萨姆C++ openCV中EM的对数似然输出,c++,opencv,machine-learning,C++,Opencv,Machine Learning,我在openCV中使用EM模型,遇到了EM::train输出的对数似然值的困难。我在单独(但相关)数据上训练EM模型,并且对数似然值与数据的绝对值相关联,即当训练值大于100时,EM::train返回强正对数似然值,当训练值小于一个大的负值时,我的理解是,考虑到EM的工作方式,这没有任何意义。 下面是训练模型的代码部分,以防我犯了任何愚蠢的错误(我对opencv很陌生),std::cout确认当训练值大于100时,值大于1,当训练值小于1时,值小于-1 我的问题与这篇文章类似: 除非没有实现DP
{
双对数=0;
cv::EM模型(g,1,参数);
模型序列(样本输入列(i),对数可能性);
对于(int j=0;j{
double logs =0;
cv::EM model (g,1,parameters);
model.train(sample_input.col(i),log_likelihoods);
for(int j = 0; j < number_selected; j++ )
{
logs += log_likelihoods.at<double>(j);
std::cout << log_likelihoods.at<double>(j) <<' ';
}
mean_of_logs[i] += 0.1*logs;
reduced_models.push_back(model);
}