def main_gaussian():
    x_train, y_train, x_test, y_test = gaussians_dataset(2, [100, 150], [[1, 3], [-4, 8]], [[2, 3], [4, 1]])

    svm_alg = SVM(n_epochs=100, lambDa=0.001, use_bias=False)

    # train
    svm_alg.fit_gd(x_train, y_train, verbose=True)

    # test
    predictions = svm_alg.predict(x_test)

    accuracy = float(np.sum(predictions == y_test)) / y_test.shape[0]
    print('Test accuracy: {}'.format(accuracy))

    plot_pegasos_margin(x_test, y_test, svm_alg)
示例#2
0
def main_svm():
    """
    Main function to experiment with SVM on synthetic points.
    """

    X_train, Y_train, X_test, Y_test = gaussians_dataset(2, [100, 150], [[1, 3], [-4, 8]], [[2, 3], [4, 1]])
    # X_train, Y_train, X_test, Y_test = two_moon_dataset(n_samples=300, noise=0.2)

    C = 100
    kernel = 'rbf'

    model = svm.SVC(C=C, kernel=kernel)
    model.fit(X_train, Y_train)

    # print result on train
    plot_margin(X_train, Y_train, model, title='train data')

    # print result on test
    plot_margin(X_test, Y_test, model, title='test data')
def main_kmeans_gaussian():
    """
    Main function to run kmeans the synthetic gaussian dataset.
    """

    # generate the dataset
    data, cl = gaussians_dataset(3, [100, 100, 70], [[1, 1], [-4, 6], [8, 8]],
                                 [[1, 1], [3, 3], [1, 1]])

    # visualize the dataset
    fig, ax = plt.subplots(1, 2)
    ax[0].scatter(data[:, 0], data[:, 1], c=cl, s=40)
    plt.waitforbuttonpress()

    # solve kmeans optimization
    labels = kmeans(data, n_cl=3, verbose=True)

    # visualize results
    ax[1].scatter(data[:, 0], data[:, 1], c=labels, s=40)
    plt.waitforbuttonpress()
def main_adaboost():
    """
    Main function for fitting and testing Adaboost classifier.
    """
    X_train, Y_train, X_test, Y_test = gaussians_dataset(2, [300, 400], [[1, 3], [-4, 8]], [[2, 3], [4, 1]])
    # X_train, Y_train, X_test, Y_test = h_shaped_dataset()
    # X_train, Y_train, X_test, Y_test = two_moon_dataset(n_samples=500, noise=0.2)

    # Visualize dataset
    plot_2d_dataset(X_train, Y_train, 'Training', blocking=False)

    # Init model
    model = AdaBoostClassifier(n_learners=100)

    # Train
    model.fit(X_train, Y_train, verbose=True)

    # Predict
    y_preds = model.predict(X_test)
    print('Accuracy on test set: {}'.format(np.mean(y_preds == Y_test)))

    # Visualize the predicted boundary
    plot_boundary(X_train, Y_train, model)