From b15eb3c5bea87d53d3bf4890c4e404a5d5cffff0 Mon Sep 17 00:00:00 2001
From: Baptiste Bauvin <baptiste.bauvin@lis-lab.fr>
Date: Wed, 13 Feb 2019 16:37:15 -0500
Subject: [PATCH] Adjustments on training curve with noise

---
 .../MonoMultiViewClassifiers/Monoview/Additions/BoostUtils.py | 4 ++--
 .../Monoview/Additions/CQBoostUtils.py                        | 2 +-
 .../Monoview/Additions/QarBoostUtils.py                       | 1 +
 .../MonoMultiViewClassifiers/MonoviewClassifiers/Adaboost.py  | 1 +
 .../MonoMultiViewClassifiers/MonoviewClassifiers/CQBoost.py   | 2 ++
 5 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/multiview_platform/MonoMultiViewClassifiers/Monoview/Additions/BoostUtils.py b/multiview_platform/MonoMultiViewClassifiers/Monoview/Additions/BoostUtils.py
index 964f9225..90dca128 100644
--- a/multiview_platform/MonoMultiViewClassifiers/Monoview/Additions/BoostUtils.py
+++ b/multiview_platform/MonoMultiViewClassifiers/Monoview/Additions/BoostUtils.py
@@ -202,12 +202,12 @@ class StumpsClassifiersGenerator(ClassifiersGenerator):
                     self.estimators_ += [DecisionStumpClassifier(i,
                                                                  (different[stump_number]+different[
                                                                      stump_number+1])/2, 1).fit(X, y)
-                                        for stump_number in range(nb_different-1)]
+                                        for stump_number in range(int(nb_different)-1)]
                     if self.self_complemented:
                         self.estimators_ += [DecisionStumpClassifier(i,
                                                                      (different[stump_number] + different[
                                                                          stump_number + 1]) / 2, -1).fit(X, y)
-                                             for stump_number in range(nb_different-1)]
+                                             for stump_number in range(int(nb_different)-1)]
                 else:
                     self.estimators_ += [DecisionStumpClassifier(i, minimums[i] + ranges[i] * stump_number, 1).fit(X, y)
                                         for stump_number in range(1, self.n_stumps_per_attribute + 1)
diff --git a/multiview_platform/MonoMultiViewClassifiers/Monoview/Additions/CQBoostUtils.py b/multiview_platform/MonoMultiViewClassifiers/Monoview/Additions/CQBoostUtils.py
index c7ebf500..18367d71 100644
--- a/multiview_platform/MonoMultiViewClassifiers/Monoview/Additions/CQBoostUtils.py
+++ b/multiview_platform/MonoMultiViewClassifiers/Monoview/Additions/CQBoostUtils.py
@@ -22,7 +22,7 @@ class ColumnGenerationClassifier(BaseEstimator, ClassifierMixin, BaseBoost):
         self.dual_constraint_rhs = dual_constraint_rhs
         self.mu = mu
         self.train_time = 0
-        self.plotted_metric = Metrics.accuracy_score
+        self.plotted_metric = Metrics.zero_one_loss
 
     def fit(self, X, y):
         start = time.time()
diff --git a/multiview_platform/MonoMultiViewClassifiers/Monoview/Additions/QarBoostUtils.py b/multiview_platform/MonoMultiViewClassifiers/Monoview/Additions/QarBoostUtils.py
index 09277d17..bc2aac34 100644
--- a/multiview_platform/MonoMultiViewClassifiers/Monoview/Additions/QarBoostUtils.py
+++ b/multiview_platform/MonoMultiViewClassifiers/Monoview/Additions/QarBoostUtils.py
@@ -502,6 +502,7 @@ class ColumnGenerationClassifierQar(BaseEstimator, ClassifierMixin, BaseBoost):
             np.savetxt(directory+"y_train.csv", self.y_train, delimiter=',')
             np.savetxt(directory + "raw_weights.csv", self.raw_weights, delimiter=',')
             np.savetxt(directory + "c_bounds.csv", self.c_bounds, delimiter=',')
+            np.savetxt(directory + "train_metrics.csv", self.train_metrics, delimiter=',')
         args_dict = dict(
             (arg_name, str(self.__dict__[arg_name])) for arg_name in
             self.printed_args_name_list)
diff --git a/multiview_platform/MonoMultiViewClassifiers/MonoviewClassifiers/Adaboost.py b/multiview_platform/MonoMultiViewClassifiers/MonoviewClassifiers/Adaboost.py
index 0bdc4977..68c1b2d0 100644
--- a/multiview_platform/MonoMultiViewClassifiers/MonoviewClassifiers/Adaboost.py
+++ b/multiview_platform/MonoMultiViewClassifiers/MonoviewClassifiers/Adaboost.py
@@ -46,6 +46,7 @@ class Adaboost(AdaBoostClassifier, BaseMonoviewClassifier):
         interpretString += "\n\n Estimator error | Estimator weight\n"
         interpretString += "\n".join([str(error) +" | "+ str(weight/sum(self.estimator_weights_)) for error, weight in zip(self.estimator_errors_, self.estimator_weights_)])
         get_accuracy_graph(self.metrics, "Adaboost", directory+"metrics.png", self.plotted_metric_name, bounds=list(self.bounds))
+        np.savetxt(directory + "train_metrics.csv", self.metrics, delimiter=',')
         return interpretString
 
 
diff --git a/multiview_platform/MonoMultiViewClassifiers/MonoviewClassifiers/CQBoost.py b/multiview_platform/MonoMultiViewClassifiers/MonoviewClassifiers/CQBoost.py
index 3d57fe81..ea3c4f1e 100644
--- a/multiview_platform/MonoMultiViewClassifiers/MonoviewClassifiers/CQBoost.py
+++ b/multiview_platform/MonoMultiViewClassifiers/MonoviewClassifiers/CQBoost.py
@@ -2,6 +2,7 @@ from ..Monoview.MonoviewUtils import CustomUniform, CustomRandint, BaseMonoviewC
 from ..Monoview.Additions.CQBoostUtils import ColumnGenerationClassifier
 from ..Monoview.Additions.BoostUtils import getInterpretBase
 
+import numpy as np
 
 class CQBoost(ColumnGenerationClassifier, BaseMonoviewClassifier):
 
@@ -22,6 +23,7 @@ class CQBoost(ColumnGenerationClassifier, BaseMonoviewClassifier):
         return True
 
     def getInterpret(self, directory, y_test):
+        np.savetxt(directory + "train_metrics.csv", self.train_metrics, delimiter=',')
         return getInterpretBase(self, directory, "CQBoost", self.weights_, y_test)
 
 
-- 
GitLab