-
Notifications
You must be signed in to change notification settings - Fork 0
/
print_results.py
50 lines (43 loc) · 2.12 KB
/
print_results.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
from sklearn.metrics import confusion_matrix, classification_report, precision_recall_fscore_support
import numpy
def calculateWeightedMeasure(measures, supports):
if len(measures) != len(supports):
raise(Exception("blub"))
ret = 0
sum = 0
for i in range(0, len(measures)):
sum = sum + supports[i]
ret = ret + (measures[i] * supports[i])
return(ret / sum)
def calculateAllWeightedMeasuresInRelevants(measures, lower = 3, upper = 8):
length = len(measures)
supports = measures[length - 1].tolist()[lower:upper]
ret = []
for i in range(0,length - 1):
ret.append(calculateWeightedMeasure(measures[i].tolist()[lower:upper], supports))
return(ret)
def printEvaluation(fileName, model, Xtrain, Ytrain, Xtest, Ytest, batch_size):
file = open("outputs/" + fileName, "w+")
scores = model.evaluate(Xtest, Ytest, verbose = 0, batch_size = batch_size)
file.write("Model Accuracy: %.2f%%" % (scores[1]*100))
file.write("Training:\n")
ypred = numpy.argmax(model.predict(Xtrain), axis = 1)
file.write("----------------------------------\n")
file.write("Confusion matrix:\n")
file.write(str(confusion_matrix(numpy.argmax(Ytrain, axis = 1), ypred)))
file.write("\n\n-----------------------------------\n")
file.write("Metrics:\n")
file.write(str(classification_report(numpy.argmax(Ytrain, axis = 1), ypred)))
file.write("Weighted measures: \n")
file.write(str(calculateAllWeightedMeasuresInRelevants(precision_recall_fscore_support(numpy.argmax(Ytrain, axis = 1), ypred))))
file.write("\nTest:\n")
ypred = numpy.argmax(model.predict(Xtest), axis = 1)
file.write("----------------------------------\n")
file.write("Confusion matrix:\n")
file.write(str(confusion_matrix(numpy.argmax(Ytest, axis = 1), ypred)))
file.write("\n\n-----------------------------------\n")
file.write("Metrics:\n")
file.write(str(classification_report(numpy.argmax(Ytest, axis = 1), ypred)))
file.write("Weighted measures:\n")
file.write(str(calculateAllWeightedMeasuresInRelevants(precision_recall_fscore_support(numpy.argmax(Ytest, axis = 1), ypred))))
file.close()