diff --git a/VTR_Results.py b/VTR_Results.py new file mode 100644 index 0000000..c3d5fa9 --- /dev/null +++ b/VTR_Results.py @@ -0,0 +1,142 @@ +from keras.models import model_from_json +import numpy as np +import csv +import math + +model = model_from_json(open('model.json').read()) +model.load_weights('weights.h5') +data_dir = "" +X_test = np.load(data_dir+'VTR_test_X.npy') +Y = np.load(data_dir+'VTR_test_Y.npy') + +names = Y[:, :1] +Y_test = Y[:,1:] +predictions = [] + +loss1 = 0.0 +loss2 = 0.0 +loss3 = 0.0 +loss4 = 0.0 +max_1 = 0.0 +max_2 = 0.0 +max_3 = 0.0 +max_4 = 0.0 +list_1 = [] +list_2 = [] +list_3 = [] +list_4 = [] +male = [0.0, 0.0, 0.0, 0.0, 0.0, [], [], [], []] +female = [0.0, 0.0, 0.0, 0.0, 0.0, [], [], [], []] +karma_list = [0, 0.0, 0.0, 0.0, 0.0] +AVG_list = [0, 0.0, 0.0, 0.0, 0.0] + +y_hat = model.predict(X_test) +for i in range(0,len(Y_test)): + l1 = np.abs(float(Y_test[i, 0]) - y_hat[i, 0]) + l2 = np.abs(float(Y_test[i, 1]) - y_hat[i, 1]) + l3 = np.abs(float(Y_test[i, 2]) - y_hat[i, 2]) + l4 = np.abs(float(Y_test[i, 3]) - y_hat[i, 3]) + pred = [names[i][0], float(Y_test[i, 0]), float(Y_test[i, 1]), float(Y_test[i, 2]), float(Y_test[i, 3])] + + AVG_list[0] += 1 + AVG_list[1] += float(Y_test[i, 0]) - y_hat[i, 0] + AVG_list[2] += float(Y_test[i, 1]) - y_hat[i, 1] + AVG_list[3] += float(Y_test[i, 2]) - y_hat[i, 2] + AVG_list[4] += float(Y_test[i, 3]) - y_hat[i, 3] + + pred.extend([y_hat[i, 0], y_hat[i, 1], y_hat[i, 2], y_hat[i, 3]]) + + if names[i][0].split('_')[3][0] == 'f': + female[0] += 1 + female[1] += l1 + female[2] += l2 + female[3] += l3 + female[4] += l4 + female[5].append(l1) + female[6].append(l2) + female[7].append(l3) + female[8].append(l4) + elif names[i][0].split('_')[3][0] == 'm': + male[0] += 1 + male[1] += l1 + male[2] += l2 + male[3] += l3 + male[4] += l4 + male[5].append(l1) + male[6].append(l2) + male[7].append(l3) + male[8].append(l4) + + predictions.append(pred) + + list_1.append(l1) + list_2.append(l2) + list_3.append(l3) + list_4.append(l4) + max_1 = max(max_1,l1) + max_2 = max(max_2,l2) + max_3 = max(max_3,l3) + max_4 = max(max_4,l4) + + loss1 += l1 + loss2 += l2 + loss3 += l3 + loss4 += l4 + + karma_list[0] += 1 + karma_list[1] += l1 * l1 + karma_list[2] += l2 * l2 + karma_list[3] += l3 * l3 + karma_list[4] += l4 * l4 +loss1 /= len(Y_test) +loss2 /= len(Y_test) +loss3 /= len(Y_test) +loss4 /= len(Y_test) +total_loss = loss1+loss2+loss3+loss4 +total_loss /= 4.0 +print('standard deviation', round(np.std(list_1)*1000, 2), round(np.std(list_2)*1000, 2), round(np.std(list_3)*1000, 2), round(np.std(list_4)*1000, 2)) +print('median', round(np.median(list_1)*1000, 2), round(np.median(list_2)*1000, 2), round(np.median(list_3)*1000, 2), round(np.median(list_4)*1000, 2)) +print('max loss ', round(max_1*1000, 2), round(max_2*1000, 2), round(max_3*1000, 2), round(max_4*1000, 2)) +print('total loss ', round(total_loss*1000, 2)) +print('Real test score:', round(loss1*1000, 2), round(loss2*1000, 2), round(loss3*1000, 2), round(loss4*1000, 2)) + +female[1] = round((female[1] / female[0])*1000, 2) +female[2] = round((female[2] / female[0])*1000, 2) +female[3] = round((female[3] / female[0])*1000, 2) +female[4] = round((female[4] / female[0])*1000, 2) +female[5] = round(np.std(female[5])*1000, 2) +female[6] = round(np.std(female[6])*1000, 2) +female[7] = round(np.std(female[7])*1000, 2) +female[8] = round(np.std(female[8])*1000, 2) + +male[1] = round((male[1] / male[0])*1000, 2) +male[2] = round((male[2] / male[0])*1000, 2) +male[3] = round((male[3] / male[0])*1000, 2) +male[4] = round((male[4] / male[0])*1000, 2) +male[5] = round(np.std(male[5])*1000, 2) +male[6] = round(np.std(male[6])*1000, 2) +male[7] = round(np.std(male[7])*1000, 2) +male[8] = round(np.std(male[8])*1000, 2) + +print("male: ", male) +print("female: ", female) + +# karma + +karma_list[1] /= karma_list[0] +karma_list[2] /= karma_list[0] +karma_list[3] /= karma_list[0] +karma_list[4] /= karma_list[0] +print('root mean squared error ', round(math.sqrt(karma_list[1]) * 1000, 2), round(math.sqrt(karma_list[2]) * 1000, 2), + round(math.sqrt(karma_list[3]) * 1000, 2), round(math.sqrt(karma_list[4]) * 1000, 2)) + +AVG_list[1] /= AVG_list[0] +AVG_list[2] /= AVG_list[0] +AVG_list[3] /= AVG_list[0] +AVG_list[4] /= AVG_list[0] +print('AVG ', round(AVG_list[1] * 1000, 2), round(AVG_list[2] * 1000, 2), round(AVG_list[3] * 1000, 2), round(AVG_list[4] * 1000, 2)) + + +with open("results/VTR.csv", "wb") as f: + writer = csv.writer(f) + writer.writerows(predictions)