tree_algorithms.append(kdtree_euclid)
ball = BallTree()
ball.setDistanceFunction(
    EuclideanDistance())  # only Euclidean Distance function
tree_algorithms.append(ball)
cover = CoverTree()
cover.setDistanceFunction(
    EuclideanDistance())  # only Euclidean Distance function
tree_algorithms.append(cover)
data.setClassIndex(data.numAttributes() - 1)
for num in range(1, 30, 2):
    file.write(str(num))
    for algoknn in tree_algorithms:
        log.write("---------------------------------\nK: " + str(num) +
                  ", Search Algorithm: " + algoknn.__class__.__name__ + "\n")
        algo = IBk()
        algo.setNearestNeighbourSearchAlgorithm(algoknn)
        algo.setKNN(num)
        x = time.time()
        algo.buildClassifier(data)
        log.write("Time to build classifier: " + str(time.time() - x) + "\n")
        evaluation = Evaluation(data)
        output = PlainText()  # plain text output for predictions
        output.setHeader(data)
        buffer = StringBuffer()  # buffer to use
        output.setBuffer(buffer)
        attRange = Range()  # no additional attributes output
        outputDistribution = Boolean(False)  # we don't want distribution
        x = time.time()
        #evaluation.evaluateModel(algo, data, [output, attRange, outputDistribution])
        evaluation.crossValidateModel(algo, data, 10, rand,