Jelajahi Sumber

Fixed deta bacup in exercise.py and computed Benchmark.

Kristian Schultz 3 tahun lalu
induk
melakukan
167f73c27a
1 mengubah file dengan 14 tambahan dan 2 penghapusan
  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.dataset import DataSet, TrainTestData
 from library.testers import lr, knn, gb, rf, TestResult, runTester
 from library.testers import lr, knn, gb, rf, TestResult, runTester
+import json
+
 
 
 
 
 class Exercise:
 class Exercise:
@@ -124,9 +126,11 @@ class Exercise:
                 sliceTitle = f"Slice {sliceNr + 1}/{self.numOfSlices}"
                 sliceTitle = f"Slice {sliceNr + 1}/{self.numOfSlices}"
                 self.debug(f"\n------ {stepTitle}: {sliceTitle} -------")
                 self.debug(f"\n------ {stepTitle}: {sliceTitle} -------")
                 imageFileName = None
                 imageFileName = None
+                pickleFileName = None
                 if resultsFileName is not None:
                 if resultsFileName is not None:
                     imageFileName = f"{resultsFileName}/Step{shuffleStep + 1}_Slice{sliceNr + 1}.pdf"
                     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.")
         self.debug("### Exercise is done.")
 
 
@@ -152,7 +156,7 @@ class Exercise:
 
 
         return {}
         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.
         Runs one test for the given gan and dataSlice.
 
 
@@ -179,6 +183,14 @@ class Exercise:
             self.debug(f"-> create {numOfNeededSamples} synthetic samples")
             self.debug(f"-> create {numOfNeededSamples} synthetic samples")
             newSamples = gan.generateData(numOfNeededSamples)
             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.
             # Print out an overview of the new dataset.
             plotCloud(dataSlice.train.data0, dataSlice.train.data1, newSamples, outputFile=imageFileName, doShow=False)
             plotCloud(dataSlice.train.data0, dataSlice.train.data1, newSamples, outputFile=imageFileName, doShow=False)