Skip to content

Commit cd6b56e

Browse files
committed
implemented generateSolutions function
1 parent 91decff commit cd6b56e

File tree

6 files changed

+102
-17
lines changed

6 files changed

+102
-17
lines changed

DataFilesReader.py

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,3 @@ def getData(self):
2020
self.trainValues = self.tresholds[0:9]
2121
self.validationValues = self.tresholds[9:-1]
2222
self.testValues = self.tresholds[-1]
23-
24-
def getMean(self):
25-
mean = 0
26-
for value in self.tresholds:
27-
mean = mean + value
28-
29-
return mean / len(self.tresholds)

FunctionPicker.py

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
import numpy as np
2+
import statistics as stats
3+
import math
4+
import random
5+
6+
class FunctionPicker:
7+
def function_mean(self, array):
8+
return np.mean(array)
9+
10+
def function_geo_mean(self, array):
11+
return stats.geometric_mean(array)
12+
13+
def function_harmonic_mean(self, array):
14+
return stats.harmonic_mean(array)
15+
16+
def function_square_mean(self, array):
17+
square_sum = 0
18+
19+
for value in array:
20+
square_sum = square_sum + value * value
21+
22+
return math.sqrt(square_sum / len(array))
23+
24+
def function_min(self, array):
25+
return min(array)
26+
27+
def function_max(self, array):
28+
return max(array)
29+
30+
def function_median(self, array):
31+
return stats.median(array)
32+
33+
def random_applier(self, array, function_number):
34+
match function_number:
35+
case 0:
36+
return self.function_mean(array)
37+
38+
case 1:
39+
return self.function_geo_mean(array)
40+
41+
case 2:
42+
return self.function_harmonic_mean(array)
43+
44+
case 3:
45+
return self.function_square_mean(array)
46+
47+
case 4:
48+
return self.function_min(array)
49+
50+
case 5:
51+
return self.function_max(array)
52+
53+
case 6:
54+
return self.function_median(array)
55+
56+
if __name__ == "__main__":
57+
function_picker = FunctionPicker()
58+
function_number = random.randint(0, 6)
59+
print(function_picker.random_applier([0.633333, 0.570588, 0.567427, 0.868627, 0.865466, 0.892157, 0.629412], function_number))

Predictor.py

Lines changed: 43 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,62 @@
11
import pandas as pd
22
import math
33
import glob
4+
import platform
5+
import random
46

57
from DataFilesReader import DataFilesReader
8+
from FunctionPicker import FunctionPicker
69

710
class Predictor:
811
def __init__(self, filespath):
912
self.filespath = filespath
1013
self.pathToFiles = glob.glob(filespath)
1114

1215
def iterateThroughFiles(self):
13-
for pathToFile in self.pathToFiles:
14-
# pathToFile = 'input/input0.CSV'
15-
dataFilesReader = DataFilesReader(pathToFile)
16-
dataFilesReader.getData()
17-
16+
readers = []
17+
# for pathToFile in self.pathToFiles:
18+
pathToFile = 'input\\input5.CSV'
19+
dataFilesReader = DataFilesReader(pathToFile)
20+
dataFilesReader.getData()
21+
22+
if (platform.system() == 'Linux'):
1823
output_path = 'output/' + pathToFile.split('/')[-1][:-3] + 'out'
19-
output_file = open(output_path, 'w+')
20-
output_file.write(str(dataFilesReader.expectedValue))
21-
output_file.write('\n')
22-
output_file.write(str(dataFilesReader.getMean()))
24+
else:
25+
output_path = 'output/' + pathToFile.split('\\')[-1][:-3] + 'out'
26+
output_file = open(output_path, 'w+')
27+
28+
readers.append(dataFilesReader)
29+
30+
self.readers = readers
31+
32+
def generateSolutions(self):
33+
functionPicker = FunctionPicker()
34+
35+
output_path = 'output/logs.out'
36+
output_file = open(output_path, 'w+')
2337

38+
for i in range(1000):
39+
random_nr = random.randint(2, len(self.readers[0].trainValues))
40+
function_number = random.randint(0, 6)
41+
random_indexes = []
42+
for nr in range(random_nr):
43+
random_indexes.append(random.randint(0, len(self.readers[0].trainValues) - 1))
44+
45+
score = 0
46+
for reader in self.readers:
47+
values = []
48+
for index in random_indexes:
49+
values.append(reader.trainValues[index])
50+
51+
reader.trainValues.append(functionPicker.random_applier(values, function_number))
52+
score_index = round(255 * reader.trainValues[-1])
53+
score = score + reader.fmeans[score_index]
54+
55+
output_file.write(str(random_nr) + ' ' + str(random_indexes) + ' ' + str(function_number) + ' ' + str(score / len(self.readers)) + '\n')
56+
2457
def startAlgorithm(self):
2558
self.iterateThroughFiles()
59+
self.generateSolutions()
2660

2761
if __name__ == "__main__":
2862
predictor = Predictor("input/*.CSV")
1.46 KB
Binary file not shown.
2.06 KB
Binary file not shown.

output/input0.out

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)