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)
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]