示例#1
0
def cross_validate(X_train, Y_train, folds, k_list):
    classifier = KNearestNeighbor()
    classifier.train(X_train, Y_train)

    k_to_accuracies = classifier.cross_validate(folds, k_list)
    for k in k_list:
        accuracies = k_to_accuracies[k]
        plt.scatter([k] * len(accuracies), accuracies)

    accuracies_mean = np.array([np.mean(v) for k, v in sorted(k_to_accuracies.items())])
    accuracies_std = np.array([np.std(v) for k, v in sorted(k_to_accuracies.items())])
    plt.errorbar(k_list, accuracies_mean, yerr=accuracies_std)
    plt.title("Cross-Validation on k")
    plt.xlabel('k')
    plt.ylabel('Cross-Validation accuracy')
    plt.show()
示例#2
0
def k_classifier(X_train, Y_train, X_test, Y_test, k):
    classifier = KNearestNeighbor()
    classifier.train(X_train, Y_train)
    Y_test_predictions = classifier.predict(X_test, k=k, distance_type='euclidean_no_loop')
    accuracy = classifier.eval_accuracy(Y_test, Y_test_predictions)
    return [accuracy, Y_test_predictions]
示例#3
0
def compare_distances(X_train, Y_train, X_test):
    classifier = KNearestNeighbor()
    classifier.train(X_train, Y_train)

    classifier.eval_distances(X_test)
示例#4
0
def compare_time(X_train, Y_train, X_test):
    classifier = KNearestNeighbor()
    classifier.train(X_train, Y_train)

    classifier.eval_time(X_test)
示例#5
0
def predict_with_distances(X_train, Y_train, X_test, Y_test):

    classifier = KNearestNeighbor()
    classifier.train(X_train, Y_train)

    Y_test_predictions = classifier.predict(X_test, k=1, distance_type='manhattan_two_loops')
    classifier.eval_accuracy(Y_test, Y_test_predictions)

    Y_test_predictions = classifier.predict(X_test, k=1, distance_type='manhattan_one_loop')
    classifier.eval_accuracy(Y_test, Y_test_predictions)

    Y_test_predictions = classifier.predict(X_test, k=1, distance_type='manhattan_no_loop')
    classifier.eval_accuracy(Y_test, Y_test_predictions)

    Y_test_predictions = classifier.predict(X_test, k=1, distance_type='euclidean_two_loops')
    classifier.eval_accuracy(Y_test, Y_test_predictions)

    Y_test_predictions = classifier.predict(X_test, k=1, distance_type='euclidean_one_loop')
    classifier.eval_accuracy(Y_test, Y_test_predictions)

    Y_test_predictions = classifier.predict(X_test, k=1, distance_type='euclidean_no_loop')
    classifier.eval_accuracy(Y_test, Y_test_predictions)