From ddc12c130307da58cba10f183c2c6038e90344bb Mon Sep 17 00:00:00 2001
From: Baptiste Bauvin <baptiste.bauvin.1@ulaval.ca>
Date: Sat, 21 Oct 2017 13:49:05 -0400
Subject: [PATCH] Added graphs tovizualize errors on examples

---
 .../ResultAnalysis.py                         | 22 ++++++++++++++++++-
 1 file changed, 21 insertions(+), 1 deletion(-)

diff --git a/Code/MonoMultiViewClassifiers/ResultAnalysis.py b/Code/MonoMultiViewClassifiers/ResultAnalysis.py
index c185401f..ea7e04d8 100644
--- a/Code/MonoMultiViewClassifiers/ResultAnalysis.py
+++ b/Code/MonoMultiViewClassifiers/ResultAnalysis.py
@@ -90,7 +90,7 @@ def analyzeIterLabels(labelsAnalysisList, directory, classifiersNames, minSize=1
     figKW = {"figsize": (figWidth, figHeight)}
     fig, ax = plt.subplots(nrows=1, ncols=1, **figKW)
     data = sum(labelsAnalysisList)
-    cax = plt.imshow(data, interpolation='none', cmap="grey", aspect='auto')
+    cax = plt.imshow(-data, interpolation='none', cmap="Greys", aspect='auto')
     plt.title('Errors depending on the classifier')
     ticks = np.arange(nbIter/2-0.5, nbClassifiers * nbIter, nbIter)
     plt.xticks(ticks, classifiersNames, rotation="vertical")
@@ -99,6 +99,16 @@ def analyzeIterLabels(labelsAnalysisList, directory, classifiersNames, minSize=1
     fig.tight_layout()
     fig.savefig(directory + time.strftime("%Y%m%d-%H%M%S") + "-error_analysis.png")
     plt.close()
+    errorOnExamples = -1 * np.sum(data, axis=1) / nbIter + (nbClassifiers*len(labelsAnalysisList))
+    np.savetxt(directory + time.strftime("%Y%m%d-%H%M%S") + "-clf_errors.csv", data, delimiter=",")
+    np.savetxt(directory + time.strftime("%Y%m%d-%H%M%S") + "-example_errors.csv", errorOnExamples, delimiter=",")
+    fig, ax = plt.subplots()
+    x = np.arange(nbExamples)
+    plt.bar(x, errorOnExamples)
+    plt.ylim([0,nbClassifiers*len(labelsAnalysisList)])
+    plt.title("Number of classifiers that failed to classify each example")
+    fig.savefig(directory + time.strftime("%Y%m%d-%H%M%S") + "-example_errors.png")
+    plt.close()
 
 
 def analyzeLabels(labelsArrays, realLabels, results, directory, minSize = 10):
@@ -130,6 +140,16 @@ def analyzeLabels(labelsArrays, realLabels, results, directory, minSize = 10):
     fig.tight_layout()
     fig.savefig(directory + time.strftime("%Y%m%d-%H%M%S") + "-error_analysis.png")
     plt.close()
+    errorOnExamples = -1*np.sum(data, axis=1)/nbIter+nbClassifiers
+    np.savetxt(directory + time.strftime("%Y%m%d-%H%M%S") + "-clf_errors.csv", data, delimiter=",")
+    np.savetxt(directory + time.strftime("%Y%m%d-%H%M%S") + "-example_errors.csv", errorOnExamples, delimiter=",")
+    fig, ax = plt.subplots()
+    x = np.arange(nbExamples)
+    plt.bar(x, errorOnExamples)
+    plt.ylim([0,nbClassifiers])
+    plt.title("Number of classifiers that failed to classify each example")
+    fig.savefig(directory + time.strftime("%Y%m%d-%H%M%S") + "-example_errors.png")
+    plt.close()
     return data
 
 
-- 
GitLab