From 6b0b174175dcccd1387fcbb0679175ffb13fe7d9 Mon Sep 17 00:00:00 2001 From: Thomas <purcell@fhi-berlin.mpg.de> Date: Wed, 15 Sep 2021 18:54:18 +0200 Subject: [PATCH] Make a proper copy function for SVMWrapper Minor changes to LossFunctionConvexHull as a result (score for inds *= n_class * n_samp) --- src/classification/SVMWrapper.cpp | 23 ++++++++++++++++++++ src/classification/SVMWrapper.hpp | 4 ++-- src/loss_function/LossFunctionConvexHull.cpp | 2 +- 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/classification/SVMWrapper.cpp b/src/classification/SVMWrapper.cpp index 7a0c98a8..271c7be3 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 8f412797..038dc345 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 01ab3fe0..6327408d 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) -- GitLab