|
@@ -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)
|
|
|
|
|
|