diff --git a/src/classification/SVMWrapper.cpp b/src/classification/SVMWrapper.cpp index 7a0c98a86ca49bfcd2ebcfc9180218130ea2785d..271c7be36d7eaff564eb273e7b0e3f167dc5f89a 100644 --- a/src/classification/SVMWrapper.cpp +++ b/src/classification/SVMWrapper.cpp @@ -64,6 +64,29 @@ SVMWrapper::SVMWrapper(const double C, const int n_class, const int n_dim, const SVMWrapper(C, n_class, n_dim, prop.size(), prop.data()) {} +SVMWrapper::SVMWrapper(const SVMWrapper& o): + _model(nullptr), + _y(o._y), + _y_est(o._y_est), + _coefs(o._coefs), + _intercept(o._intercept), + _w_remap(o._w_remap), + _b_remap(o._b_remap), + _map_prop_vals(o._map_prop_vals), + _C(o._C), + _n_dim(o._n_dim), + _n_samp(o._n_samp), + _n_class(o._n_class), + _n_misclassified(o._n_misclassified) +{ + setup_parameter_obj(_C); + setup_x_space(); + + _prob.l = _n_samp; + _prob.y = _y.data(); + _prob.x = _x.data(); +} + SVMWrapper::~SVMWrapper() { svm_destroy_param(&_param); diff --git a/src/classification/SVMWrapper.hpp b/src/classification/SVMWrapper.hpp index 8f412797b51625c2d954182fe192e0025162c150..038dc345ccd5bae4eb43f89b49803f56f0b10bcb 100644 --- a/src/classification/SVMWrapper.hpp +++ b/src/classification/SVMWrapper.hpp @@ -106,14 +106,14 @@ public: * * @param o The object to be copied */ - SVMWrapper(const SVMWrapper& o) = default; + SVMWrapper(const SVMWrapper& o); /** * @brief The move constructor * * @param o The object to be moved */ - SVMWrapper(SVMWrapper&& o) = default; + SVMWrapper(SVMWrapper&& o) = delete; /** * @brief The destructor for the SVMWrapper diff --git a/src/loss_function/LossFunctionConvexHull.cpp b/src/loss_function/LossFunctionConvexHull.cpp index 01ab3fe0784b407bcd95366809987777597ef2f7..6327408d942ded34eee4ad3d35534290c6462b24 100644 --- a/src/loss_function/LossFunctionConvexHull.cpp +++ b/src/loss_function/LossFunctionConvexHull.cpp @@ -261,7 +261,7 @@ double LossFunctionConvexHull::operator()(const std::vector<int>& inds) { n_convex_overlap += static_cast<double>(lp.get_n_overlap(inds)); } - return n_convex_overlap; + return n_convex_overlap * _n_samp * _n_class; } double LossFunctionConvexHull::operator()(const std::vector<model_node_ptr>& feats)