# Result for Hybrid Embedding Accuracy
import numpy as np

#MNIST
TTN_pca30_mnist_mse = np.array([0.9858156028368794, 0.9839243498817967, 0.9839243498817967, 0.9796690307328605, 0.9546099290780142])
TTN_ae30_mnist_mse = np.array([0.8591016548463357, 0.7848699763593381, 0.7408983451536643, 0.6865248226950355, 0.8222222222222222])
TTN_pca32_mnist_mse = np.array([0.6099290780141844, 0.6189125295508274, 0.6335697399527187, 0.6061465721040189, 0.5456264775413712])
TTN_ae32_mnist_mse = np.array([0.8439716312056738, 0.900709219858156, 0.807565011820331, 0.8387706855791962, 0.7801418439716312])

U5_pca30_mnist_mse = np.array([0.983451536643026, 0.983451536643026, 0.9787234042553191, 0.9820330969267139, 0.9791962174940898])
U5_ae30_mnist_mse = np.array([0.8600472813238771, 0.8250591016548463, 0.7650118203309693, 0.7754137115839244, 0.7848699763593381])
U5_pca32_mnist_mse = np.array([0.7040189125295508, 0.6628841607565011, 0.7536643026004728, 0.642080378250591, 0.6822695035460993])
U5_ae32_mnist_mse = np.array([0.9791962174940898, 0.9427895981087471, 0.9806146572104019, 0.9621749408983451, 0.8704491725768322])

U6_pca30_mnist_mse = np.array([0.9815602836879432, 0.9820330969267139, 0.9810874704491725, 0.9829787234042553, 0.9839243498817967])
U6_ae30_mnist_mse = np.array([0.8326241134751773, 0.8146572104018912, 0.9371158392434988, 0.8349881796690307, 0.8865248226950354])
U6_pca32_mnist_mse = np.array([0.6832151300236406, 0.7347517730496453, 0.6217494089834515, 0.7040189125295508, 0.6803782505910165])
U6_ae32_mnist_mse = np.array([0.9276595744680851, 0.91725768321513, 0.9574468085106383, 0.9867612293144208, 0.9111111111111111])

U9_pca30_mnist_mse = np.array([0.9304964539007092, 0.9286052009456265, 0.8926713947990543, 0.975886524822695, 0.9205673758865248])
U9_ae30_mnist_mse = np.array([0.8047281323877069, 0.8444444444444444, 0.6723404255319149, 0.7612293144208038, 0.8520094562647754])
U9_pca32_mnist_mse = np.array([0.46477541371158393, 0.557919621749409, 0.5801418439716312, 0.5234042553191489, 0.5947990543735224])
U9_ae32_mnist_mse = np.array([0.7144208037825059, 0.8978723404255319, 0.8680851063829788, 0.9286052009456265, 0.9650118203309692])

U13_pca30_mnist_mse = np.array([0.9806146572104019, 0.9829787234042553, 0.9754137115839243, 0.9787234042553191, 0.9801418439716312])
U13_ae30_mnist_mse = np.array([0.8699763593380615, 0.8680851063829788, 0.873758865248227, 0.8222222222222222, 0.840661938534279])
U13_pca32_mnist_mse = np.array([0.6959810874704492, 0.608983451536643, 0.6463356973995272, 0.6245862884160757, 0.5858156028368794])
U13_ae32_mnist_mse = np.array([0.941371158392435, 0.9673758865248226, 0.948936170212766, 0.9361702127659575, 0.9479905437352246])

U14_pca30_mnist_mse = np.array([0.9782505910165484, 0.9820330969267139, 0.9796690307328605, 0.9787234042553191, 0.9801418439716312])
U14_ae30_mnist_mse = np.array([0.8321513002364066, 0.8534278959810875, 0.7692671394799054, 0.7943262411347518, 0.8992907801418439])
U14_pca32_mnist_mse = np.array([0.6690307328605201, 0.6699763593380614, 0.6108747044917258, 0.6638297872340425, 0.6704491725768321])
U14_ae32_mnist_mse = np.array([0.9073286052009456, 0.9281323877068558, 0.858628841607565, 0.9645390070921985, 0.9295508274231679])

U15_pca30_mnist_mse = np.array([0.9773049645390071, 0.983451536643026, 0.9815602836879432, 0.984869976359338, 0.9853427895981087])
U15_ae30_mnist_mse = np.array([0.8099290780141843, 0.7721040189125296, 0.8491725768321513, 0.8799054373522459, 0.8624113475177305])
U15_pca32_mnist_mse = np.array([0.6382978723404256, 0.8028368794326242, 0.6614657210401891, 0.7314420803782505, 0.6539007092198581])
U15_ae32_mnist_mse = np.array([0.9508274231678487, 0.88274231678487, 0.9721040189125295, 0.9148936170212766, 0.9886524822695035])

SO4_pca30_mnist_mse = np.array([0.9853427895981087, 0.984869976359338, 0.9825059101654846, 0.9829787234042553, 0.9791962174940898])
SO4_ae30_mnist_mse = np.array([0.8851063829787233, 0.8340425531914893, 0.8028368794326242, 0.8888888888888888, 0.9196217494089834])
SO4_pca32_mnist_mse = np.array([0.7026004728132388, 0.7829787234042553, 0.7687943262411348, 0.7754137115839244, 0.6898345153664303])
SO4_ae32_mnist_mse = np.array([0.9588652482269504, 0.9555555555555556, 0.9853427895981087, 0.9002364066193853, 0.9408983451536643])

SU4_pca30_mnist_mse = np.array([0.9843971631205674, 0.9862884160756501, 0.9891252955082742, 0.9829787234042553, 0.9843971631205674])
SU4_ae30_mnist_mse = np.array([0.8728132387706856, 0.9290780141843972, 0.7527186761229314, 0.8614657210401891, 0.83451536643026])
SU4_pca32_mnist_mse = np.array([0.7881796690307329, 0.7583924349881797, 0.7952718676122932, 0.782033096926714, 0.7470449172576832])
SU4_ae32_mnist_mse = np.array([0.9773049645390071, 0.9517730496453901, 0.991016548463357, 0.9905437352245863, 0.9508274231678487])

SU4_1_pca30_mnist_mse = np.array([0.983451536643026, 0.9829787234042553, 0.9872340425531915, 0.9815602836879432, 0.9782505910165484])
SU4_1_ae30_mnist_mse = np.array([0.8841607565011821, 0.8401891252955083, 0.8973995271867612, 0.8808510638297873, 0.7943262411347518])
SU4_1_pca32_mnist_mse = np.array([0.7588652482269503, 0.7711583924349882, 0.7635933806146572, 0.7588652482269503, 0.7446808510638298])
SU4_1_ae32_mnist_mse = np.array([0.975886524822695, 0.9773049645390071, 0.9858156028368794, 0.9385342789598109, 0.9560283687943263])

# Fashion MNIST
TTN_pca30_fashion_mse = np.array([0.835, 0.8595, 0.835, 0.8545, 0.824])
TTN_ae30_fashion_mse = np.array([0.748, 0.855, 0.87, 0.8495, 0.834])
TTN_pca32_fashion_mse = np.array([0.549, 0.6065, 0.5735, 0.5845, 0.615])
TTN_ae32_fashion_mse = np.array([0.901, 0.9055, 0.864, 0.8975, 0.917])

U5_pca30_fashion_mse = np.array([0.844, 0.8365, 0.854, 0.855, 0.8385])
U5_ae30_fashion_mse = np.array([0.8955, 0.8295, 0.9205, 0.91, 0.896])
U5_pca32_fashion_mse = np.array([0.646, 0.6545, 0.64, 0.6675, 0.614])
U5_ae32_fashion_mse = np.array([0.913, 0.9035, 0.9245, 0.951, 0.9025])

U6_pca30_fashion_mse = np.array([0.8815, 0.8805, 0.8345, 0.877, 0.8515])
U6_ae30_fashion_mse = np.array([0.7245, 0.9295, 0.8845, 0.87, 0.909])
U6_pca32_fashion_mse = np.array([0.6415, 0.6885, 0.6285, 0.6215, 0.6655])
U6_ae32_fashion_mse = np.array([0.931, 0.9405, 0.92, 0.933, 0.9225])

U9_pca30_fashion_mse = np.array([0.805, 0.7855, 0.799, 0.844, 0.708])
U9_ae30_fashion_mse = np.array([0.8235, 0.822, 0.841, 0.8785, 0.725])
U9_pca32_fashion_mse = np.array([0.487, 0.54, 0.547, 0.5325, 0.5975])
U9_ae32_fashion_mse = np.array([0.873, 0.9255, 0.8685, 0.8535, 0.9135])

U13_pca30_fashion_mse = np.array([0.855, 0.859, 0.8165, 0.8235, 0.845])
U13_ae30_fashion_mse = np.array([0.823, 0.904, 0.8785, 0.9115, 0.9255])
U13_pca32_fashion_mse = np.array([0.6275, 0.6135, 0.6325, 0.595, 0.656])
U13_ae32_fashion_mse = np.array([0.929, 0.9415, 0.8615, 0.8055, 0.8805])

U14_pca30_fashion_mse = np.array([0.8515, 0.824, 0.828, 0.8175, 0.9125])
U14_ae30_fashion_mse = np.array([0.8295, 0.8625, 0.8435, 0.7805, 0.927])
U14_pca32_fashion_mse = np.array([0.6025, 0.6075, 0.6125, 0.613, 0.5875])
U14_ae32_fashion_mse = np.array([0.901, 0.91, 0.8895, 0.9415, 0.8915])

U15_pca30_fashion_mse = np.array([0.897, 0.844, 0.876, 0.8215, 0.862])
U15_ae30_fashion_mse = np.array([0.8685, 0.811, 0.8395, 0.893, 0.8965])
U15_pca32_fashion_mse = np.array([0.599, 0.581, 0.6035, 0.6665, 0.6075])
U15_ae32_fashion_mse = np.array([0.891, 0.893, 0.9215, 0.9, 0.9015])

SO4_pca30_fashion_mse = np.array([0.8435, 0.8255, 0.845, 0.8515, 0.8555])
SO4_ae30_fashion_mse = np.array([0.871, 0.905, 0.8215, 0.8005, 0.8905])
SO4_pca32_fashion_mse = np.array([0.6585, 0.6205, 0.626, 0.617, 0.672])
SO4_ae32_fashion_mse = np.array([0.9285, 0.936, 0.886, 0.9275, 0.907])

SU4_pca30_fashion_mse = np.array([0.8615, 0.8985, 0.89, 0.8975, 0.87])
SU4_ae30_fashion_mse = np.array([0.937, 0.873, 0.916, 0.9135, 0.899])
SU4_pca32_fashion_mse = np.array([0.696, 0.673, 0.672, 0.646, 0.655])
SU4_ae32_fashion_mse = np.array([0.9135, 0.9115, 0.936, 0.94, 0.94])

SU4_1_pca30_fashion_mse = np.array([0.89, 0.8995, 0.9095, 0.8655, 0.902])
SU4_1_ae30_fashion_mse = np.array([0.901, 0.949, 0.9145, 0.8095, 0.8845])
SU4_1_pca32_fashion_mse = np.array([0.629, 0.633, 0.688, 0.6875, 0.6425])
SU4_1_ae32_fashion_mse = np.array([0.9365, 0.919, 0.9495, 0.935, 0.9045])

print("HAE and HDE result with MSE")
print("MNIST DATASET: ")
print("TTN PCA30 " + str(TTN_pca30_mnist_mse.mean()) + " +/- " + str(TTN_pca30_mnist_mse.std()))
print("TTN AE30 " + str(TTN_ae30_mnist_mse.mean()) + " +/- " + str(TTN_ae30_mnist_mse.std()))
print("TTN PCA32 " + str(TTN_pca32_mnist_mse.mean()) + " +/- " + str(TTN_pca32_mnist_mse.std()))
print("TTN AE32 " + str(TTN_ae32_mnist_mse.mean()) + " +/- " + str(TTN_ae32_mnist_mse.std()))
print("\n")
print("U5 PCA30 " + str(U5_pca30_mnist_mse.mean()) + " +/- " + str(U5_pca30_mnist_mse.std()))
print("U5 AE30 " + str(U5_ae30_mnist_mse.mean()) + " +/- " + str(U5_ae30_mnist_mse.std()))
print("U5 PCA32 " + str(U5_pca32_mnist_mse.mean()) + " +/- " + str(U5_pca32_mnist_mse.std()))
print("U5 AE32 " + str(U5_ae32_mnist_mse.mean()) + " +/- " + str(U5_ae32_mnist_mse.std()))
print("\n")
print("U6 PCA30 " + str(U6_pca30_mnist_mse.mean()) + " +/- " + str(U6_pca30_mnist_mse.std()))
print("U6 AE30 " + str(U6_ae30_mnist_mse.mean()) + " +/- " + str(U6_ae30_mnist_mse.std()))
print("U6 PCA32 " + str(U6_pca32_mnist_mse.mean()) + " +/- " + str(U6_pca32_mnist_mse.std()))
print("U6 AE32 " + str(U6_ae32_mnist_mse.mean()) + " +/- " + str(U6_ae32_mnist_mse.std()))
print("\n")
print("U9 PCA30 " + str(U9_pca30_mnist_mse.mean()) + " +/- " + str(U9_pca30_mnist_mse.std()))
print("U9 AE30 " + str(U9_ae30_mnist_mse.mean()) + " +/- " + str(U9_ae30_mnist_mse.std()))
print("U9 PCA32 " + str(U9_pca32_mnist_mse.mean()) + " +/- " + str(U9_pca32_mnist_mse.std()))
print("U9 AE32 " + str(U9_ae32_mnist_mse.mean()) + " +/- " + str(U9_ae32_mnist_mse.std()))
print("\n")
print("U13 PCA30 " + str(U13_pca30_mnist_mse.mean()) + " +/- " + str(U13_pca30_mnist_mse.std()))
print("U13 AE30 " + str(U13_ae30_mnist_mse.mean()) + " +/- " + str(U13_ae30_mnist_mse.std()))
print("U13 PCA32 " + str(U13_pca32_mnist_mse.mean()) + " +/- " + str(U13_pca32_mnist_mse.std()))
print("U13 AE32 " + str(U13_ae32_mnist_mse.mean()) + " +/- " + str(U13_ae32_mnist_mse.std()))
print("\n")
print("U14 PCA30 " + str(U14_pca30_mnist_mse.mean()) + " +/- " + str(U14_pca30_mnist_mse.std()))
print("U14 AE30 " + str(U14_ae30_mnist_mse.mean()) + " +/- " + str(U14_ae30_mnist_mse.std()))
print("U14 PCA32 " + str(U14_pca32_mnist_mse.mean()) + " +/- " + str(U14_pca32_mnist_mse.std()))
print("U14 AE32 " + str(U14_ae32_mnist_mse.mean()) + " +/- " + str(U14_ae32_mnist_mse.std()))
print("\n")
print("U15 PCA30 " + str(U15_pca30_mnist_mse.mean()) + " +/- " + str(U15_pca30_mnist_mse.std()))
print("U15 AE30 " + str(U15_ae30_mnist_mse.mean()) + " +/- " + str(U15_ae30_mnist_mse.std()))
print("U15 PCA32 " + str(U15_pca32_mnist_mse.mean()) + " +/- " + str(U15_pca32_mnist_mse.std()))
print("U15 AE32 " + str(U15_ae32_mnist_mse.mean()) + " +/- " + str(U15_ae32_mnist_mse.std()))
print("\n")
print("SO4 PCA30 " + str(SO4_pca30_mnist_mse.mean()) + " +/- " + str(SO4_pca30_mnist_mse.std()))
print("SO4 AE30 " + str(SO4_ae30_mnist_mse.mean()) + " +/- " + str(SO4_ae30_mnist_mse.std()))
print("SO4 PCA32 " + str(SO4_pca32_mnist_mse.mean()) + " +/- " + str(SO4_pca32_mnist_mse.std()))
print("SO4 AE32 " + str(SO4_ae32_mnist_mse.mean()) + " +/- " + str(SO4_ae32_mnist_mse.std()))
print("\n")
print("SU4 PCA30 " + str(SU4_pca30_mnist_mse.mean()) + " +/- " + str(SU4_pca30_mnist_mse.std()))
print("SU4 AE30 " + str(SU4_ae30_mnist_mse.mean()) + " +/- " + str(SU4_ae30_mnist_mse.std()))
print("SU4 PCA32 " + str(SU4_pca32_mnist_mse.mean()) + " +/- " + str(SU4_pca32_mnist_mse.std()))
print("SU4 AE32 " + str(SU4_ae32_mnist_mse.mean()) + " +/- " + str(SU4_ae32_mnist_mse.std()))
print("\n")
print("SU4_1 PCA30 " + str(SU4_1_pca30_mnist_mse.mean()) + " +/- " + str(SU4_1_pca30_mnist_mse.std()))
print("SU4_1 AE30 " + str(SU4_1_ae30_mnist_mse.mean()) + " +/- " + str(SU4_1_ae30_mnist_mse.std()))
print("SU4_1 PCA32 " + str(SU4_1_pca32_mnist_mse.mean()) + " +/- " + str(SU4_1_pca32_mnist_mse.std()))
print("SU4_1 AE32 " + str(SU4_1_ae32_mnist_mse.mean()) + " +/- " + str(SU4_1_ae32_mnist_mse.std()))
print("\n")
print("FASHION MNIST DATASET")
print("TTN PCA30 " + str(TTN_pca30_fashion_mse.mean()) + " +/- " + str(TTN_pca30_fashion_mse.std()))
print("TTN AE30 " + str(TTN_ae30_fashion_mse.mean()) + " +/- " + str(TTN_ae30_fashion_mse.std()))
print("TTN PCA32 " + str(TTN_pca32_fashion_mse.mean()) + " +/- " + str(TTN_pca32_fashion_mse.std()))
print("TTN AE32 " + str(TTN_ae32_fashion_mse.mean()) + " +/- " + str(TTN_ae32_fashion_mse.std()))
print("\n")
print("U5 PCA30 " + str(U5_pca30_fashion_mse.mean()) + " +/- " + str(U5_pca30_fashion_mse.std()))
print("U5 AE30 " + str(U5_ae30_fashion_mse.mean()) + " +/- " + str(U5_ae30_fashion_mse.std()))
print("U5 PCA32 " + str(U5_pca32_fashion_mse.mean()) + " +/- " + str(U5_pca32_fashion_mse.std()))
print("U5 AE32 " + str(U5_ae32_fashion_mse.mean()) + " +/- " + str(U5_ae32_fashion_mse.std()))
print("\n")
print("U6 PCA30 " + str(U6_pca30_fashion_mse.mean()) + " +/- " + str(U6_pca30_fashion_mse.std()))
print("U6 AE30 " + str(U6_ae30_fashion_mse.mean()) + " +/- " + str(U6_ae30_fashion_mse.std()))
print("U6 PCA32 " + str(U6_pca32_fashion_mse.mean()) + " +/- " + str(U6_pca32_fashion_mse.std()))
print("U6 AE32 " + str(U6_ae32_fashion_mse.mean()) + " +/- " + str(U6_ae32_fashion_mse.std()))
print("\n")
print("U9 PCA30 " + str(U9_pca30_fashion_mse.mean()) + " +/- " + str(U9_pca30_fashion_mse.std()))
print("U9 AE30 " + str(U9_ae30_fashion_mse.mean()) + " +/- " + str(U9_ae30_fashion_mse.std()))
print("U9 PCA32 " + str(U9_pca32_fashion_mse.mean()) + " +/- " + str(U9_pca32_fashion_mse.std()))
print("U9 AE32 " + str(U9_ae32_fashion_mse.mean()) + " +/- " + str(U9_ae32_fashion_mse.std()))
print("\n")
print("U13 PCA30 " + str(U13_pca30_fashion_mse.mean()) + " +/- " + str(U13_pca30_fashion_mse.std()))
print("U13 AE30 " + str(U13_ae30_fashion_mse.mean()) + " +/- " + str(U13_ae30_fashion_mse.std()))
print("U13 PCA32 " + str(U13_pca32_fashion_mse.mean()) + " +/- " + str(U13_pca32_fashion_mse.std()))
print("U13 AE32 " + str(U13_ae32_fashion_mse.mean()) + " +/- " + str(U13_ae32_fashion_mse.std()))
print("\n")
print("U14 PCA30 " + str(U14_pca30_fashion_mse.mean()) + " +/- " + str(U14_pca30_fashion_mse.std()))
print("U14 AE30 " + str(U14_ae30_fashion_mse.mean()) + " +/- " + str(U14_ae30_fashion_mse.std()))
print("U14 PCA32 " + str(U14_pca32_fashion_mse.mean()) + " +/- " + str(U14_pca32_fashion_mse.std()))
print("U14 AE32 " + str(U14_ae32_fashion_mse.mean()) + " +/- " + str(U14_ae32_fashion_mse.std()))
print("\n")
print("U15 PCA30 " + str(U15_pca30_fashion_mse.mean()) + " +/- " + str(U15_pca30_fashion_mse.std()))
print("U15 AE30 " + str(U15_ae30_fashion_mse.mean()) + " +/- " + str(U15_ae30_fashion_mse.std()))
print("U15 PCA32 " + str(U15_pca32_fashion_mse.mean()) + " +/- " + str(U15_pca32_fashion_mse.std()))
print("U15 AE32 " + str(U15_ae32_fashion_mse.mean()) + " +/- " + str(U15_ae32_fashion_mse.std()))
print("\n")
print("SO4 PCA30 " + str(SO4_pca30_fashion_mse.mean()) + " +/- " + str(SO4_pca30_fashion_mse.std()))
print("SO4 AE30 " + str(SO4_ae30_fashion_mse.mean()) + " +/- " + str(SO4_ae30_fashion_mse.std()))
print("SO4 PCA32 " + str(SO4_pca32_fashion_mse.mean()) + " +/- " + str(SO4_pca32_fashion_mse.std()))
print("SO4 AE32 " + str(SO4_ae32_fashion_mse.mean()) + " +/- " + str(SO4_ae32_fashion_mse.std()))
print("\n")
print("SU4 PCA30 " + str(SU4_pca30_fashion_mse.mean()) + " +/- " + str(SU4_pca30_fashion_mse.std()))
print("SU4 AE30 " + str(SU4_ae30_fashion_mse.mean()) + " +/- " + str(SU4_ae30_fashion_mse.std()))
print("SU4 PCA32 " + str(SU4_pca32_fashion_mse.mean()) + " +/- " + str(SU4_pca32_fashion_mse.std()))
print("SU4 AE32 " + str(SU4_ae32_fashion_mse.mean()) + " +/- " + str(SU4_ae32_fashion_mse.std()))
print("\n")
print("SU4_1 PCA30 " + str(SU4_1_pca30_fashion_mse.mean()) + " +/- " + str(SU4_1_pca30_fashion_mse.std()))
print("SU4_1 AE30 " + str(SU4_1_ae30_fashion_mse.mean()) + " +/- " + str(SU4_1_ae30_fashion_mse.std()))
print("SU4_1 PCA32 " + str(SU4_1_pca32_fashion_mse.mean()) + " +/- " + str(SU4_1_pca32_fashion_mse.std()))
print("SU4_1 AE32 " + str(SU4_1_ae32_fashion_mse.mean()) + " +/- " + str(SU4_1_ae32_fashion_mse.std()))