C=C, gamma=0.01, schedule_func=schedule_B) print('C:', C, 'weights:', w) err_train = SVM.SVM_primal_test(X_train, y_train, w) err_test = SVM.SVM_primal_test(X_test, y_test, w) print('training error:', err_train, 'test error', err_test) ### Q3 SVM dual and kernal # SVM dual print('\nSVM dual') for C in C_vals: w, b = SVM.SVM_dual(X_train, y_train, C) print('C:', C, 'weights:', w, 'bias:', b) err_train = SVM.SVM_dual_test(X_train, y_train, w, b) err_test = SVM.SVM_dual_test(X_test, y_test, w, b) print('training error:', err_train, 'test error', err_test) # SVM kernel print('\nSVM with kernel') gammas = [0.1, 0.5, 1, 5, 100] for C in C_vals: # find overlap SV for C=500/875 if C == 500.0 / 873: prev_sv = np.zeros(X_train.shape[0]) for gamma in gammas: w, b, alphas = SVM.SVM_kernel(X_train, y_train, epochs=100, C=C,