//------------------------------------------------------------------------------ void svm_model::print() const { std::cout << "n classes = " << n_class() << " n sv = " << size() << " n dims = " << n_dims() << std::endl; std::cout << "Support vectors: " << std::endl; for (size_t i = 0; i != sv.size(); ++i) { for (int j = 0; j != n_dims(); ++j) std::cout << sv[i][j] << " "; std::cout << std::endl; } std::cout << "Support vector coefficients: " << std::endl; for (size_t i = 0; i != sv_coef.size(); ++i) { for (int j = 0; j != size(); ++j) std::cout << sv_coef[i][j] << " "; std::cout << std::endl; } std::cout << "Rho: " << std::endl; for (size_t i = 0; i != rho.size(); ++i) std::cout << rho[i] << " "; std::cout << std::endl; if (!probA.empty()) { std::cout << "Probabilities A: " << std::endl; for (size_t i = 0; i != probA.size(); ++i) std::cout << probA[i] << " "; std::cout << std::endl; std::cout << "Probabilities B: " << std::endl; for (size_t i = 0; i != probB.size(); ++i) std::cout << probB[i] << " "; std::cout << std::endl; } }
//-------------------------------------------------------------------------------- int svm_model::persistent_size() const { stringstream b; b << n_class() << " " << size() << " " << n_dims() << " "; int n = b.str().size(); n += sv.size() * n_dims() * sizeof(float) + 1; { stringstream b2; for (size_t i = 0; i < sv_coef.size(); ++i) { for (int j = 0; j < size(); ++j) b2 << sv_coef[i][j] << " "; } n += b2.str().size(); } { stringstream b2; b2 << rho << " "; n += b2.str().size(); } { stringstream b2; b2 << label << " "; n += b2.str().size(); } { stringstream b2; b2 << n_sv << " "; n += b2.str().size(); } { stringstream b2; b2 << probA << " "; n += b2.str().size(); } { stringstream b2; b2 << probB << " "; n += b2.str().size(); } { stringstream b2; b2 << w << " "; n += b2.str().size(); } return n; }
//------------------------------------------------------------------------------ void svm_model::save(std::ostream &outStream) const { outStream << n_class() << " " << size() << " " << n_dims() << " "; for (auto &elem : sv) nupic::binary_save(outStream, elem, elem + n_dims()); outStream << " "; for (auto &elem : sv_coef) for (int j = 0; j < size(); ++j) outStream << elem[j] << " "; outStream << rho << ' ' << label << ' ' << n_sv << ' ' << probA << ' ' << probB << ' ' << w << ' '; }
//-------------------------------------------------------------------------------- void svm_model::save(std::ostream& outStream) const { outStream << n_class() << " " << size() << " " << n_dims() << " "; for (size_t i = 0; i < sv.size(); ++i) nta::binary_save(outStream, sv[i], sv[i] + n_dims()); outStream << " "; for (size_t i = 0; i < sv_coef.size(); ++i) for (int j = 0; j < size(); ++j) outStream << sv_coef[i][j] << " "; outStream << rho << ' ' << label << ' ' << n_sv << ' ' << probA << ' ' << probB << ' ' << w << ' '; }