best_lambda = 1000. best_thresh = 0.5 best_eta = 0.000251188643151 eps = 1.0e-2 seed = 42 frac = 0.1 num = 6 lammax = 1000.0 scale = 10.0 sparse = False # Load in MNIST training data, set 2s -> 1, others -> 0 print("Loading MNIST Training data...") X_train, y_train = mu.load_mnist(dataset='training') y_train_true = mu.mnist_filter(y_train, filterby=2) print("True number of twos in training set:",np.sum(y_train_true)) # Load in MNIST training data, set 2s -> 1, others -> 0 print("Loading MNIST Testing data...") X_test, y_test = mu.load_mnist(dataset='testing') y_test_true = mu.mnist_filter(y_test, filterby=2) # Build regularized binary classifier by minimizing 01 loss # Will need to optimize over lambda and eta via a regularization path if find_best_lam: print("Running regularization path to optmize lambda, eta...") # Split training data into subtraining set, validation set X_tr, y_tr, X_val, y_val = val.split_data(X_train, y_train, frac=frac, seed=seed)
kwargs = {} # Fit for 4s # Perform grid search to find best regularization constant and threshold? if find_best_lam: print("Finding optimal lambda and threshold via regularization path.") thresh_arr = np.linspace(-0.2,1.,num) err_val = np.zeros((num,num)) err_train = np.zeros((num,num)) # Split training data into subtraining set, validation set X_tr, y_tr, X_val, y_val = val.split_data(X_train, y_train, frac=frac, seed=seed) # Filter y values to 0, 1 labels y_tr_true = mu.mnist_filter(y_tr,filterby=3) y_val_true = mu.mnist_filter(y_val,filterby=3) # Loop over thresholds for i in range(num): # Internally loop over lambdas in regularization path err_val[i,:], err_train[i,:], lams = val.linear_reg_path(X_tr, y_tr_true, X_val, y_val_true, ri.fit_ridge, lammax=lammax, scale=scale, num=num, error_func=val.loss_01, thresh=thresh_arr[i], **kwargs) # Find minimum threshold, lambda from minimum validation error ind_t,ind_l = np.unravel_index(err_val.argmin(), err_val.shape) best_lambda = lams[ind_l]
# Perform grid search to find best regularization constant and threshold? if find_best_lam: print("Finding optimal lambda and threshold via regularization path.") thresh_arr = np.linspace(-0.2, 1., num) err_val = np.zeros((num, num)) err_train = np.zeros((num, num)) # Split training data into subtraining set, validation set X_tr, y_tr, X_val, y_val = val.split_data(X_train, y_train, frac=frac, seed=seed) # Filter y values to 0, 1 labels y_tr_true = mu.mnist_filter(y_tr, filterby=3) y_val_true = mu.mnist_filter(y_val, filterby=3) # Loop over thresholds for i in range(num): # Internally loop over lambdas in regularization path err_val[i, :], err_train[i, :], lams = val.linear_reg_path( X_tr, y_tr_true, X_val, y_val_true, ri.fit_ridge, lammax=lammax, scale=scale, num=num, error_func=val.loss_01,
best_lambda = 1000. best_thresh = 0.5 best_eta = 0.000251188643151 eps = 1.0e-2 seed = 42 frac = 0.1 num = 6 lammax = 1000.0 scale = 10.0 sparse = False # Load in MNIST training data, set 2s -> 1, others -> 0 print("Loading MNIST Training data...") X_train, y_train = mu.load_mnist(dataset='training') y_train_true = mu.mnist_filter(y_train, filterby=2) print("True number of twos in training set:", np.sum(y_train_true)) # Load in MNIST training data, set 2s -> 1, others -> 0 print("Loading MNIST Testing data...") X_test, y_test = mu.load_mnist(dataset='testing') y_test_true = mu.mnist_filter(y_test, filterby=2) # Build regularized binary classifier by minimizing 01 loss # Will need to optimize over lambda and eta via a regularization path if find_best_lam: print("Running regularization path to optmize lambda, eta...") # Split training data into subtraining set, validation set X_tr, y_tr, X_val, y_val = val.split_data(X_train, y_train,