Exemplo n.º 1
0
    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,
                                      gamma=gamma)
        print('C:', C, 'gamma:', gamma, 'weights:', w, 'bias:', b)
        # find number of support vectors
        print('# support vectors:', np.sum(alphas != 0.0))

        # find overlap SV
        if C == 500.0 / 873:
            curr_sv = np.argwhere(alphas > 0)
            overlap_sv = np.intersect1d(prev_sv, curr_sv)
            print('number of overlap SV:', overlap_sv.size)
            prev_sv = curr_sv
        # calculate training and test errors
        err_train = SVM.SVM_kernel_test(X_train,
                                        y_train,