Просмотр исходного кода

Fixed deta bacup in exercise.py and computed Benchmark.

Kristian Schultz 3 лет назад
Родитель
Сommit
167f73c27a
1 измененных файлов с 14 добавлено и 2 удалено
  1. 14 2
      library/exercise.py

+ 14 - 2
library/exercise.py

@@ -13,6 +13,8 @@ import matplotlib.pyplot as plt
 
 from library.dataset import DataSet, TrainTestData
 from library.testers import lr, knn, gb, rf, TestResult, runTester
+import json
+
 
 
 class Exercise:
@@ -124,9 +126,11 @@ class Exercise:
                 sliceTitle = f"Slice {sliceNr + 1}/{self.numOfSlices}"
                 self.debug(f"\n------ {stepTitle}: {sliceTitle} -------")
                 imageFileName = None
+                pickleFileName = None
                 if resultsFileName is not None:
                     imageFileName = f"{resultsFileName}/Step{shuffleStep + 1}_Slice{sliceNr + 1}.pdf"
-                self._exerciseWithDataSlice(gan, sliceData, imageFileName=imageFileName)
+                    pickleFileName = f"{resultsFileName}/Step{shuffleStep + 1}_Slice{sliceNr + 1}.json"
+                self._exerciseWithDataSlice(gan, sliceData, imageFileName, pickleFileName)
 
         self.debug("### Exercise is done.")
 
@@ -152,7 +156,7 @@ class Exercise:
 
         return {}
 
-    def _exerciseWithDataSlice(self, gan, dataSlice, imageFileName=None):
+    def _exerciseWithDataSlice(self, gan, dataSlice, imageFileName=None, pickleFileName=None):
         """
         Runs one test for the given gan and dataSlice.
 
@@ -179,6 +183,14 @@ class Exercise:
             self.debug(f"-> create {numOfNeededSamples} synthetic samples")
             newSamples = gan.generateData(numOfNeededSamples)
 
+            if pickleFileName is not None:
+                with open(pickleFileName, 'w') as f:
+                    json.dump({
+                        "majority": [[float(z) for z in x] for x in dataSlice.train.data0],
+                        "minority": [[float(z) for z in x] for x in dataSlice.train.data1],
+                        "synthetic": [[float(z) for z in x] for x in newSamples]
+                        }, f)
+
             # Print out an overview of the new dataset.
             plotCloud(dataSlice.train.data0, dataSlice.train.data1, newSamples, outputFile=imageFileName, doShow=False)