def pso_esn_parameters_for_elasticnet(x): ic_s =x[0] ic_e =x[1] is_s = x[2] is_e = x[3] teacher_scaling = x[4] teacher_shift = x[5] alpha =x[6] l1_ratio=x[7] esn = ESN(n_inputs = 2, n_outputs = 1, n_reservoir = n_reservoir, spectral_radius = spectral_radius, sparsity = sparsity, noise = noise, input_shift = [is_s,is_e],#[0,0] input_scaling =[ic_s,ic_e],# [0.01, 3] teacher_scaling = teacher_scaling,#1.12, teacher_shift = teacher_shift,#-0.7, out_activation = np.tanh, inverse_out_activation = np.arctanh, random_state = rng, silent = False) esn.alpha = alpha esn.l1_ratio = l1_ratio internal_states,transient = esn.train_reservior(train_ctrl,train_output) pred_train = esn.train_readout_with_elasticnet(internal_states,train_output,transient) pred_test = esn.predict(test_ctrl) test_error_rate= np.sqrt(np.mean((pred_test - test_output)**2)) #get function name as title title = inspect.stack()[0][3] print "#### {} ## train_error:{},test_error:{}".format(title,esn.train_error_rate,test_error_rate) return test_error_rate
def pso_esn_parameters_for_scad(x): # 0: tao, 1:c0, 2:IC_s,3:IC_e 4:IS_s,5:IS_e, ,6:teacher sacling,7:teacher shift # 0:IC_s,1:IC_e, 2:IS_s,3:IS_e, 4:teacher sacling,5:teacher shift,6: tao, 7:c0, ic_s =x[0] ic_e =x[1] is_s = x[2] is_e = x[3] teacher_scaling = x[4] teacher_shift = x[5] tao = x[6] c0 = x[7] esn = ESN(n_inputs = 2, n_outputs = 1, n_reservoir = n_reservoir, spectral_radius = spectral_radius, sparsity = sparsity, noise = noise, input_shift = [is_s,is_e],#[0,0] input_scaling =[ic_s,ic_e],# [0.01, 3] teacher_scaling = teacher_scaling,#1.12, teacher_shift = teacher_shift,#-0.7, out_activation = np.tanh, inverse_out_activation = np.arctanh, random_state = rng, silent = False) esn.penal_tao =tao esn.penal_c0 = c0 internal_states,transient = esn.train_reservior(train_ctrl,train_output) pred_train = esn.train_readout_with_scad(internal_states,train_output,transient) pred_test = esn.predict(test_ctrl) #test_error_rate= np.sqrt(np.mean((pred_test - test_output)**2)) test_error_rate= np.sqrt((pred_test - test_output)**2) #get function name as title title = inspect.stack()[0][3] print "#### {} ## train_error:{},test_error:{}".format(title,esn.train_error_rate,test_error_rate) return test_error_rate 这里画一个原始测试序列的图和一个test_output的图。
def compair_readout(): esn = ESN(n_inputs = 8, n_outputs = 1, n_reservoir = n_reservoir, spectral_radius = spectral_radius, sparsity = sparsity, noise = noise, input_shift = [0.51293657,0.51293657,0.51293657,0.51293657,0.03489584,0.03489584,0.03489584,0.03489584], input_scaling = [0.18636639,0.18636639,0.18636639,0.18636639, 0.11791364, 0.11791364, 0.11791364, 0.11791364], teacher_scaling = 1.45377531, teacher_shift = -0.7997228, out_activation = np.tanh, inverse_out_activation = np.arctanh, random_state = rng, silent = False) esn = ESN(n_inputs = 8, n_outputs = 1, n_reservoir = n_reservoir, spectral_radius = spectral_radius, sparsity = sparsity, noise = noise, input_shift = [0,0,0,0,0,0,0,0], input_scaling = [0.01,0.01,0.01,0.01,0.01,0.01,3,3], teacher_scaling = 1.12, teacher_shift = -0.7, out_activation = np.tanh, inverse_out_activation = np.arctanh, random_state = rng, silent = False) esn.penal_tao =0.57201544 esn.penal_c0 = 3.76108161 esn.penal_tao = 0.1 esn.penal_c0 = 3.7 #pred_train = esn.fit(train_ctrl,train_output,inspect=True) internal_states,transient = esn.train_reservior(train_ctrl,train_output) # esn_Lasso = copy.deepcopy(esn) # esn_Ridge = copy.deepcopy(esn) # esn_ElasticNet = copy.deepcopy(esn) esn_SCAD = copy.deepcopy(esn) esn.dump_parameters() # print "####pin" # pred_train = esn.train_readout_with_pin(internal_states,train_output,transient) # test_error("pinv",esn,pred_train) # exit() # # print "####ridge" # pred_train = esn_Ridge.train_readout_with_ridge(internal_states,train_output,transient) # test_error("pinv",esn_Ridge,pred_train) # # print "####Lasso" # pred_train = esn_Lasso.train_readout_with_lasso(internal_states,train_output,transient) # test_error("pinv",esn_Lasso,pred_train) # # print "####ElasticNet" # pred_train = esn_ElasticNet.train_readout_with_elasticnet(internal_states,train_output,transient) # test_error("pinv",esn_ElasticNet,pred_train) print "####SCAD" pred_train = esn_SCAD.train_readout_with_scad(internal_states,train_output,transient) test_error("pinv",esn_SCAD,pred_train)