void Learner1::PredictAll( const Data& data, const T_VECTOR& data_dist, T_VECTOR& result, float& error ) { error = 0.0; size_t data_len = data.m_data.size(); for ( size_t i = 0; i < data_len; ++i ) { //todo check valid dimension T_DTYPE value = data.m_data[i][m_best_dimension]; if (m_learn_type == ">" ) { if ( value > m_splitter ) result.push_back(1); else result.push_back(-1); } else if (m_learn_type == "<=" ) { if ( value <= m_splitter ) result.push_back(1); else result.push_back(-1); } else { std::cerr << "error: not a valid learn type," << m_learn_type << endl; assert(0); } T_DTYPE label = result[ result.size() - 1 ]; if (label*data.m_target[i] < 0) { //predict error error += 1 * data_dist[i]; } } }