Gil
Gil
Something that would be more OOP, but quite a shift in design, is that we have `Any` as a swig type, pass that to an Observer, and automagically it registers...
> basically we want this semantic (inside the RF) > > ``` > if (observer wants to record the oob error) > observer->observe(this->compute_oob_error()) > ``` > > as opposed to...
btw, I was just thinking about this and would this condition be declared once? And then when the algorithm adds a new oob index set it computes the oob error?
``` train() if (observer wants to record the oob error) observer->observe(&compute_oob_error, m_bags, m_oob_indices); ... for i in range n_bags: ... m_bags.push_back(m); m_oob_indices.push_back(indices); // this has now triggered the observer, because...
I am just not sure I understand why you need to pass the function pointer in that case? If you have ``` if (observer wants to record the oob error)...
OK, I think in that case we could look into the thing I posted above? It is more effort, but it would be neat that a combination of events triggers...
``` train() if (observer wants to record the oob error) observer->add_callback("oob_error", "Out-of-bag Error", [&](){ return get_oob_error(); }); ... // observer checks if there is a callback function // index could...
> I am sorry if I go back to the original idea, but why do we have to store twice the information for calling the `get_oob_error()` method? If we store...
I guess in terms of sync issues we should just have a helper function for oob error that uses arguments to compute the error rather than using the state of...
> FYI, Throw-lists(eg. `void fn() throw(ShogunException)`) which are used in a [number of places](https://github.com/shogun-toolbox/shogun/blob/b5345f5771e30e6ddec0a7c456f58b9f0b071868/src/shogun/base/SGObject.h#L329) have been deprecated in C++11 and removed from C++17 onwards [ref](https://stackoverflow.com/questions/13841559/deprecated-throw-list-in-c11). Hit this majorly along with...