def choose_hyper(phi, y, polyx, polyy, order): w = do_regression(phi, y, lambd=10) y_prime = (grand_order(polyx, order) * w) least_error = 100 target_alpha = 1 alphas = np.linspace(-20, -18, 10) for alp in alphas: w = do_regression(phi, y, alp) y_prime = (grand_order(polyx, order) * w) error = data_reading.MeanSquareError(y_prime, polyy) if error <= least_error: target_alpha = alp least_error = error return target_alpha
def choose_hyper(matFi, sampy, polyx, polyy, order): least_error = 100 target_alpha = 1 alphas = np.linspace(-3, 2, 1000) for alp in alphas: y_prime = grand_order(polyx, order) * do_regression(matFi, sampy, alp) error = data_reading.MeanSquareError(y_prime, polyy) if error <= least_error: target_alpha = alp least_error = error return target_alpha
alphas = np.linspace(-20, -18, 10) for alp in alphas: w = do_regression(phi, y, alp) y_prime = (grand_order(polyx, order) * w) error = data_reading.MeanSquareError(y_prime, polyy) if error <= least_error: target_alpha = alp least_error = error return target_alpha if '__main__' == __name__: poly_data, poly_keys = data_reading.readMatFile("poly_data.mat") order = 10 X, y = grand_order(poly_data['sampx'][0], order), poly_data['sampy'] polyx, polyy = poly_data['polyx'][0], poly_data['polyy'] count_data, count_keys = data_reading.readMatFile("count_data.mat") target_alpha = choose_hyper(X, y, polyx, polyy, order) w = do_regression(X, y, target_alpha) y_prime = grand_order(polyx, order) * w fig = plt.figure("LASSO") ax = fig.add_subplot(111) ax.plot(poly_data['sampx'][0], y, color='r', linestyle='', marker='*', label="sample") # regression line
total_length = len(sampx) percents = [0.1, 0.25, 0.5, 0.75] result = np.zeros((4, 5)) for j in range(1000): MSEs = [] for percent in percents: try: mse = [] train_length = int(percent * total_length) a = np.random.randint(0, total_length, size=[1, train_length])[0] sampx_sub = sampx[a] sampy_sub = sampy[a] phi = grand_order(sampx_sub, order) # LS LS_y_prime = grand_order(polyx, order) * LSregression( phi.T, sampy_sub, order) mse.append(data_reading.MeanSquareError(LS_y_prime, polyy)) # RLS RLS_target_alpha = RLS_hyper(phi.T, sampy_sub, polyx, polyy, order) RLS_y_prime = grand_order(polyx, order) * RLSregression( phi.T, sampy_sub, RLS_target_alpha) mse.append(data_reading.MeanSquareError(RLS_y_prime, polyy)) #LASSO LASSO_target_alpha = LASSO_hyper(phi, sampy_sub, polyx, polyy, order) LASSO_y_prime = grand_order(polyx, order) * LASSOregression(
LS.set_title("LR") RLS = plt.subplot(3,2,4) RLS.set_title("RLS") LASSO = plt.subplot(3,2,6) LASSO.set_title("LASSO") RR = plt.subplot(3,2,5) RR.set_title("RR") LS.plot(polyx,polyy,color='b',linestyle='-',marker='',label="target") RLS.plot(polyx,polyy,color='b',linestyle='-',marker='',label="target") LASSO.plot(polyx,polyy,color='b',linestyle='-',marker='',label="target") RR.plot(polyx,polyy,color='b',linestyle='-',marker='',label="target") train_length = int(percent * total_length) sampx_sub = sampx[range(train_length)] sampy_sub = sampy[range(train_length)] phi = grand_order(sampx_sub,order) # LS LS_y_prime = grand_order(polyx,order) * LSregression(phi.T,sampy_sub,order) LS.plot(polyx,LS_y_prime,color='r',linestyle='-',marker='',label="predict") # RLS RLS_target_alpha = RLS_hyper(phi.T,sampy_sub,polyx,polyy,order) RLS_y_prime = grand_order(polyx,order) * RLSregression(phi.T,sampy_sub,RLS_target_alpha) RLS.plot(polyx,RLS_y_prime,color='r',linestyle='-',marker='',label="predict") #LASSO LASSO_target_alpha = LASSO_hyper(phi,sampy_sub,polyx,polyy,order) LASSO_y_prime = grand_order(polyx,order) * LASSOregression(phi,sampy_sub,LASSO_target_alpha) LASSO.plot(polyx,LASSO_y_prime,color='r',linestyle='-',marker='',label="predict") #RR RR_y_prime = grand_order(polyx,order) * RRregression(phi,sampy_sub,order) RR.plot(polyx,RR_y_prime,color='r',linestyle='-',marker='',label="predict") #BR
target_alpha = alp least_error = error return target_alpha if __name__ == "__main__": poly_data, poly_keys = data_reading.readMatFile("poly_data.mat") order = 10 sampx = poly_data['sampx'][0] sampy = poly_data['sampy'] polyx = poly_data['polyx'][0] polyy = poly_data['polyy'] matFi = grand_order(sampx, order).T # part of painting fig = plt.figure("RLS") w = do_regression(matFi, sampy, 1) target_alpha = choose_hyper(matFi, sampy, polyx, polyy, order) y_prime = grand_order(polyx, order) * do_regression( matFi, sampy, target_alpha) plt.plot(poly_data['sampx'][0], sampy, color='r', linestyle='', marker='*', label="sample") plt.plot(polyx,
def do_regression(phi,sampy,order=1): w = ((np.linalg.inv(phi * phi.T)) * phi) * sampy # part of painting return w if __name__ == "__main__": poly_data , poly_keys = data_reading.readMatFile("poly_data.mat") order = 5 sampx = poly_data['sampx'][0] sampy = poly_data['sampy'] polyx = poly_data['polyx'][0] polyy = poly_data['polyy'] w = do_regression(grand_order(sampx,order).T,sampy,order) targety = grand_order(polyx,order) * w fig = plt.figure("LS") ax = fig.add_subplot(111) # sample points ax.plot(poly_data['sampx'][0],sampy,color='r',linestyle='',marker='*',label="sample") # regression line ax.plot(polyx,targety,color='g',linestyle='-',marker='',label="predict") # poly points ax.plot(polyx,polyy,color='b',linestyle='-',marker='',label="target") print data_reading.MeanSquareError(targety,polyy) ax.legend() plt.show()