for i in range(0, num_blocks): x_train_i, x_test_i = get_current_data(XTrain, XTest, blocks_generated[i,:]) new_loss,beta,corr = compute_mse(linearRegression, x_train_i, YTrain,x_test_i, YTest) losses = np.append(losses, new_loss) if len(betas)==0: betas = beta corrs = corr else: betas = np.append(betas, beta, axis =1) corrs = np.append(corrs, corr,axis = 1) ordered_losses = np.argsort(losses) orderd_losses_ = np.sort(losses) ordered_loss_ten = extract_losses(ordered_losses) weights_indexes = get_common_indexes(ordered_loss_ten,blocks_generated,n_features,betas) ordered_weights_indexes = np.argsort(weights_indexes)[::-1] ordered_weights_indexes_values = np.sort(weights_indexes)[::-1] saved_indexes = extracte_chosen_indexes(saved_indexes, ordered_weights_indexes, ordered_weights_indexes_values, chosen_indexes) x_train_saved, x_test_saved = get_current_data(XTrain, XTest, saved_indexes) mse_saved,_,_ = compute_mse(linearRegression, x_train_saved, YTrain,x_test_saved, YTest) if count==0: mse_last = mse_saved len_last = len(saved_indexes) while mse_saved>mse_last: saved_indexes = np.delete(saved_indexes, len(saved_indexes)-1) x_train_saved, x_test_saved = get_current_data(XTrain, XTest, saved_indexes) mse_saved,_,_ = compute_mse(linearRegression, x_train_saved, YTrain,x_test_saved, YTest) mse_last = mse_saved mses.append(mse_last)
if len(betas)==0: betas = beta else: betas = np.append(betas, beta, axis =1) ordered_losses = np.argsort(losses) orderd_losses_ = np.sort(losses) #losses_to_select = r3.choice(np.arange(100,200), 1, replace=False)[0] #print("loss scelte", losses_to_select) first_loss = orderd_losses_[0] chosen_losses = len(orderd_losses_[orderd_losses_<=first_loss*4./3]) if chosen_losses<5: chosen_losses=5 print("losses scelte", chosen_losses) index_chosen_losses = ordered_losses[:chosen_losses] weights_indexes,beta_sign = get_common_indexes(weights_indexes, index_chosen_losses,blocks_generated,betas,n_features,deleted_indexes,saved_indexes) ordered_weights_indexes = np.argsort(weights_indexes)[::-1] ordered_weights_indexes_values = np.sort(weights_indexes)[::-1] chosen_indexes = r3.choice(np.arange(1,6), 1, replace=False)[0] if chosen_indexes+len(saved_indexes)>final_active_set: chosen_indexes = final_active_set-len(saved_indexes) print("chosen indexes", chosen_indexes) saved_indexes,del_indexes = extract_chosen_indexes_from_start(saved_indexes, ordered_weights_indexes, chosen_indexes,del_indexes) deleted_indexes = np.where(del_indexes>index)[0] assert(len(deleted_indexes)+len(saved_indexes)<=n_features) x_train_saved, x_test_saved = get_current_data(XTrain, XTest, saved_indexes) x_test_saved = x_test_saved[rand_vect,:] YTest_saved = YTest[rand_vect] mse_saved,_,_ = compute_mse(linearRegression, x_train_saved, YTrain,x_test_saved, YTest_saved) mses.append(mse_saved)
ordered_losses = np.argsort(losses) orderd_losses_ = np.array(losses)[ordered_losses] standard_deviation = np.std(orderd_losses_) mean_weights = np.mean(orderd_losses_) chosen_losses = len(orderd_losses_[orderd_losses_ + standard_deviation <= mean_weights]) if chosen_losses > num_blocks / 3: chosen_losses = num_blocks / 3 print("losses scelte", chosen_losses) index_chosen_losses = ordered_losses[:chosen_losses] betas = np.hstack(betas) if flag_linear == 0: weights_indexes = get_common_indexes(weights_indexes, index_chosen_losses, blocks_generated, betas, n_features_transf) weights_abs = np.abs(weights_indexes) else: weights_indexes_copy = get_common_indexes(weights_indexes.copy(), index_chosen_losses, blocks_generated, betas, n_features_transf) weights_abs = np.abs(weights_indexes_copy) ordered_weights_indexes = np.argsort(weights_abs)[::-1] ordered_weights_indexes_values = weights_abs[ordered_weights_indexes] chosen_indexes = r3.choice(np.arange(2, 4), 1, replace=False)[0] if chosen_indexes + len(saved_indexes) > max_active_set: chosen_indexes = max_active_set - len(saved_indexes) print("chosen indexes", chosen_indexes) saved_indexes = extract_chosen_indexes_from_start(saved_indexes, ordered_weights_indexes, chosen_indexes)
x_train_i, x_test_i = get_current_data(XTrain, XTest, blocks_generated[i, :]) new_loss, beta, corr = compute_mse(linearRegression, x_train_i, YTrain, x_test_i, YTest) losses = np.append(losses, new_loss) if len(betas) == 0: betas = beta corrs = corr else: betas = np.append(betas, beta, axis=1) corrs = np.append(corrs, corr, axis=1) ordered_losses = np.argsort(losses) orderd_losses_ = np.sort(losses) ordered_loss_ten = ordered_losses[:10] weights_indexes, beta_sign = get_common_indexes( weights_indexes, ordered_loss_ten, blocks_generated, betas, n_features ) ordered_weights_indexes = np.argsort(weights_indexes)[::-1] ordered_weights_indexes_values = np.sort(weights_indexes)[::-1] saved_indexes = extract_chosen_indexes_from_start( saved_indexes, ordered_weights_indexes, ordered_weights_indexes_values, chosen_indexes ) x_train_saved, x_test_saved = get_current_data(XTrain, XTest, saved_indexes) mse_saved, _, _ = compute_mse(linearRegression, x_train_saved, YTrain, x_test_saved, YTest) mses.append(mse_saved) num_informative = [f for f in saved_indexes if f <= 99] print("num_inf", len(num_informative), "su", len(saved_indexes), "mse", mse_saved) saved_indexes_list.append(saved_indexes)