inline void KernelModel::computeCrossCorrelation(const vecOfvec& XX, const vectord &query, vectord& knx) { std::vector<vectord>::const_iterator x_it = XX.begin(); vectord::iterator k_it = knx.begin(); while(x_it != XX.end()) { *k_it++ = (*mKernel)(*x_it++, query); } }
virtual matrixd getAllFeatures(const vecOfvec& x) { size_t nf = nFeatures(); matrixd result(nf,x.size()); for(size_t ii=0; ii< x.size(); ++ii) { column(result,ii) = getFeatures(x[ii]); } return result; };
virtual vectord operator()(const vecOfvec& x) { vectord result(x.size()); std::vector<vectord>::const_iterator x_it = x.begin(); std::vector<vectord>::const_iterator x_end = x.end(); vectord::iterator res_it = result.begin(); while(x_it != x_end) { *res_it++ = getMean(*x_it++); } return result; };
inline vectord KernelModel::computeCrossCorrelation(const vecOfvec& XX, const vectord &query) { vectord knx(XX.size()); computeCrossCorrelation(XX,query,knx); return knx; }
void KernelModel::computeCorrMatrix(const vecOfvec& XX, matrixd& corrMatrix, double nugget) { assert(corrMatrix.size1() == XX.size()); assert(corrMatrix.size2() == XX.size()); const size_t nSamples = XX.size(); for (size_t ii=0; ii< nSamples; ++ii) { for (size_t jj=0; jj < ii; ++jj) { corrMatrix(ii,jj) = (*mKernel)(XX[ii], XX[jj]); corrMatrix(jj,ii) = corrMatrix(ii,jj); } corrMatrix(ii,ii) = (*mKernel)(XX[ii],XX[ii]) + nugget; } }
inline void MCMCSampler::printParticles() { for(size_t i=0; i<mParticles.size(); ++i) { FILE_LOG(logDEBUG) << i << "->" << mParticles[i] << " | Log-lik " << -obj->evaluate(mParticles[i]); } }
void KernelModel::computeDerivativeCorrMatrix(const vecOfvec& XX, matrixd& corrMatrix, int dth_index) { assert(corrMatrix.size1() == XX.size()); assert(corrMatrix.size2() == XX.size()); const size_t nSamples = XX.size(); for (size_t ii=0; ii< nSamples; ++ii) { for (size_t jj=0; jj < ii; ++jj) { corrMatrix(ii,jj) = mKernel->gradient(XX[ii],XX[jj], dth_index); corrMatrix(jj,ii) = corrMatrix(ii,jj); } corrMatrix(ii,ii) = mKernel->gradient(XX[ii],XX[ii],dth_index); } }