code: def get_error(data, labels, pos_neurons, neg_neurons = [], add_noise = True):
    
    num_correct = 0
    num_false_positives = 0
    num_false_negatives = 0
    classifications = numpy.zeros(data.nRows())
    for neuron in pos_neurons:
      classifications += neuron.calculate_on_entire_dataset(data)
    for neuron in neg_neurons:
      classifications -= neuron.calculate_on_entire_dataset(data)
    if add_noise:
      classifications += (numpy.random.rand() - 0.5)/1000
    classifications = numpy.sign(classifications)
    for classification, label in zip(classifications, labels):
      if classification > 0 and label > 0:
        num_correct += 1.0
      elif classification <= 0 and label <= 0:
        num_correct += 1.0
      elif classification > 0 and label <= 0:
        num_false_positives += 1
      else:
        num_false_negatives += 1
    return (1.*num_false_positives + num_false_negatives)/data.nRows(), num_false_positives, num_false_negatives
docs: Calculates error, including number of false positives and false negatives.
  
    Written to allow the use of multiple neurons, in case we attempt to use a
    population in the future.