import numpy as np

# File reading
dat_file = np.load('data/student.npz')
A_learn = dat_file['A_learn']
b_learn = dat_file['b_learn']
A_test = dat_file['A_test']
b_test = dat_file['b_test']

m = 395 # number of read examples (total:395)
n = 27 # features
m_learn = 300


## Least squares funtion of numpy
l =  np.linalg.lstsq(A_learn, b_learn)
print(l[0])

# Regressor
x_reg=l[0]


#Predictor
predict = A_test.dot(x_reg)

# Printing
SHOW_PREDICTION = True
SHOW_PREDICTOR  = True

if SHOW_PREDICTION:
    print('\n\n  Predicted | True value')
    for i in range(predict.size):
        print('\t{:2d}     {:2d} '.format(int(predict[i]),int(b_test[i])))
        
if SHOW_PREDICTOR:
    filename = 'data/student.txt' 
    f = open(filename, 'r')
    f.readline() # read the first (description) line
    for i in range(n):
        print("{:2.3f} \t-- {:s}".format(x_reg[i],f.readline()))
    print("{:2.3f} \t-- Intercept".format(x_reg[n]))
    f.close()
