11/*
22 * Copyright Peter G. Jensen
3- *
3+ *
44 * This program is free software: you can redistribute it and/or modify
55 * it under the terms of the GNU Lesser General Public License as published by
66 * the Free Software Foundation, either version 3 of the License, or
77 * (at your option) any later version.
8- *
8+ *
99 * This program is distributed in the hope that it will be useful,
1010 * but WITHOUT ANY WARRANTY; without even the implied warranty of
1111 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1212 * GNU General Public License for more details.
13- *
13+ *
1414 * You should have received a copy of the GNU Lesser General Public License
1515 * along with this program. If not, see <http://www.gnu.org/licenses/>.
1616 */
1717
18- /*
18+ /*
1919 * File: MLearning.cpp
2020 * Author: Peter G. Jensen
21- *
21+ *
2222 * Created on July 25, 2017, 9:58 AM
2323 */
2424
@@ -104,7 +104,8 @@ namespace prlearn {
104104 }
105105
106106 void MLearning::addSample (size_t dimen, const double * f_var,
107- const double * t_var, size_t label,
107+ const double * t_var, size_t *, size_t ,
108+ size_t label,
108109 size_t dest, double value, const std::vector<MLearning>& clouds,
109110 bool minimization, const double delta,
110111 const propts_t & options) {
@@ -225,7 +226,7 @@ namespace prlearn {
225226 }
226227 }
227228
228- void MLearning::update (const std::vector<MLearning>&, bool )
229+ void MLearning::update (const std::vector<MLearning>&, bool )
229230 {
230231 }
231232
@@ -254,10 +255,10 @@ namespace prlearn {
254255 auto c = clouds[s._cloud ]._nodes [s._nodes [i]]._q .avg ();
255256 fut = std::min (fut, c);
256257 if (c == best)
257- var = std::min (var, clouds[s._cloud ]._nodes [s._nodes [i]]._q ._variance );
258+ var = std::min (var, clouds[s._cloud ]._nodes [s._nodes [i]]._q .variance () );
258259 else if ((c < best && minimize) || (c > best && !minimize)) {
259260 best = c;
260- var = clouds[s._cloud ]._nodes [s._nodes [i]]._q ._variance ;
261+ var = clouds[s._cloud ]._nodes [s._nodes [i]]._q .variance () ;
261262 }
262263 }
263264 }
@@ -274,8 +275,8 @@ namespace prlearn {
274275 auto v = s._variance [d];
275276 v.first .avg () += best;
276277 v.second .avg () += best;
277- v.first ._variance = std::max (v.first ._variance , var);
278- v.second ._variance = std::max (v.second ._variance , var);
278+ v.first .set_variance ( std::max (v.first .variance () , var) );
279+ v.second .set_variance ( std::max (v.second .variance () , var) );
279280 tmpq[d].first .addPoints (v.first .cnt (), v.first .avg ());
280281 tmpq[d].second .addPoints (v.second .cnt (), v.second .avg ());
281282 mean.addPoints (v.first .cnt (), v.first .avg ());
@@ -287,8 +288,8 @@ namespace prlearn {
287288 auto v = s._old [d];
288289 v.first .avg () += best;
289290 v.second .avg () += best;
290- v.first ._variance = std::max (v.first ._variance , var);
291- v.second ._variance = std::max (v.second ._variance , var);
291+ v.first .set_variance ( std::max (v.first .variance () , var) );
292+ v.second .set_variance ( std::max (v.second .variance () , var) );
292293 old_mean.addPoints (v.first .cnt (), v.first .avg ());
293294 old_mean.addPoints (v.second .cnt (), v.second .avg ());
294295 old_var.push_back (v.first );
@@ -304,7 +305,7 @@ namespace prlearn {
304305 for (auto & s : sample_qvar) {
305306 {
306307 const auto dif = std::abs (s.avg () - mean._avg );
307- const auto std = std::sqrt (s._variance );
308+ const auto std = std::sqrt (s.variance () );
308309 auto var = (std::pow (dif + std, 2.0 ) + std::pow (dif - std, 2.0 )) / 2.0 ;
309310 svar.addPoints (s.cnt (), var);
310311 }
@@ -316,7 +317,7 @@ namespace prlearn {
316317 }
317318 {
318319 const auto dif = std::abs (s.avg () - dmin);
319- const auto std = std::sqrt (s._variance );
320+ const auto std = std::sqrt (s.variance () );
320321 auto var = (std::pow (dif + std, 2.0 ) + std::pow (dif - std, 2.0 )) / 2.0 ;
321322 vars[id].addPoints (s.cnt (), var);
322323 }
@@ -327,18 +328,20 @@ namespace prlearn {
327328
328329 for (auto & s : old_var) {
329330 const auto dif = std::abs (s.avg () - old_mean._avg );
330- const auto std = std::sqrt (s._variance );
331+ const auto std = std::sqrt (s.variance () );
331332 auto var = (std::pow (dif + std, 2.0 ) + std::pow (dif - std, 2.0 )) / 2.0 ;
332333 ovar.addPoints (s.cnt (), var);
333334 }
334335
335336 for (size_t i = 0 ; i < dimen; ++i) {
336- tmpq[i].first ._variance = vars[i]._avg ;
337- tmpq[i].second ._variance = vars[i + dimen]._avg ;
337+ tmpq[i].first .set_variance ( vars[i]._avg ) ;
338+ tmpq[i].second .set_variance ( vars[i + dimen]._avg ) ;
338339 }
339340
340- qvar_t nq (mean._avg , mean._cnt / (dimen * 2 ), svar._avg );
341- qvar_t oq (old_mean._avg , old_mean._cnt / (dimen * 2 ), ovar._avg );
341+ qvar_t nq (mean._avg , mean._cnt / (dimen * 2 ), 0 );
342+ nq.set_variance (svar._avg );
343+ qvar_t oq (old_mean._avg , old_mean._cnt / (dimen * 2 ), 0 );
344+ oq.set_variance (ovar._avg );
342345 return std::make_pair (nq, oq);
343346 }
344347
0 commit comments