📄 variancepartitioner.cpp
字号:
#include "VariancePartitioner.hpp"using namespace indii::ml::aux;VariancePartitioner::~VariancePartitioner() { //}void VariancePartitioner::init(Partitioner::points& xws) { /* pre-condition */ assert (xws.size() >= 2); const unsigned int N = xws.front()->x.size(); Partitioner::points::iterator iter, end; double W = 0.0; // total weight vector mu(N), sigma(N); // mean, variance /* calculate mean and variance */ mu.clear(); sigma.clear(); iter = xws.begin(); end = xws.end(); while (iter != end) { W += (*iter)->w; noalias(mu) += (*iter)->w * (*iter)->x; noalias(sigma) += (*iter)->w * element_prod((*iter)->x, (*iter)->x); iter++; } mu /= W; sigma /= W; noalias(sigma) -= element_prod(mu, mu); /* select dimension of highest variance */ this->index = index_norm_inf(sigma); /* split on mean of given dimension */ this->value = mu(index);}Partitioner::Partition VariancePartitioner::assign(const aux::vector& x) { if (x(index) <= value) { return Partitioner::LEFT; } else { return Partitioner::RIGHT; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -