title: TypeError: 'int' object is not iterable error
body: <p>I am trying to run a python code but I get an error, I am not familiar with python so I don't know how to debug the code.
  please help and thank you.
  I just found this code on this website  : 
  <a href="http://www.paulvangent.com/2016/04/01/emotion-recognition-with-python-opencv-and-a-face-dataset/" rel="nofollow noreferrer">http://www.paulvangent.com/2016/04/01/emotion-recognition-with-python-opencv-and-a-face-dataset/</a>
  here is the code : </p>
  
  <pre><code>import cv2
  import glob
  import random
  import numpy as np
  
  emotions = ["neutral", "anger", "contempt", "disgust", "fear", "happy", "sadness", "surprise"] #Emotion list
  fishface = cv2.face.createFisherFaceRecognizer() #Initialize fisher face classifier
  
  data = {}
  
  def get_files(emotion): #Define function to get file list, randomly shuffle it and split 80/20
      files = glob.glob("dataset\\%s\\*" %emotion)
      random.shuffle(files)
      training = files[:int(len(files)*0.8)] #get first 80% of file list
      prediction = files[-int(len(files)*0.2):] #get last 20% of file list
      return training, prediction
  
  def make_sets():
      training_data = []
      training_labels = []
      prediction_data = []
      prediction_labels = []
      for emotion in emotions:
          training, prediction = get_files(emotion)
          #Append data to training and prediction list, and generate labels 0-7
          for item in training:
              image = cv2.imread(item) #open image
              gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) #convert to grayscale
              training_data.append(gray) #append image array to training data list
              training_labels.append(emotions.index(emotion))
  
          for item in prediction: #repeat above process for prediction set
              image = cv2.imread(item)
              gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
              prediction_data.append(gray)
              prediction_labels.append(emotions.index(emotion))
  
      return training_data, training_labels, prediction_data, prediction_labels
  
  def run_recognizer():
      training_data, training_labels, prediction_data, prediction_labels = make_sets()
  
      print ("training fisher face classifier")
      print ("size of training set is:", len(training_labels), "images")
      fishface.train(training_data, np.asarray(training_labels))
      print ("predicting classification set")
      cnt = 0
      correct = 0
      incorrect = 0
      for image in prediction_data:
          pred, conf = fishface.predict(image)
          if pred == prediction_labels[cnt]:
              correct += 1
              cnt += 1
          else:
              incorrect += 1
              cnt += 1
      return ((100*correct)/(correct + incorrect))
  #Now run it
  metascore = []
  for i in range(0,10):
      correct = run_recognizer()
      print ("got", correct, "percent correct!")
      metascore.append(correct)
  
  print ("\n\nend score:", np.mean(metascore), "percent correct!")
  </code></pre>
  
  <p>here is the output of this code : </p>
  
  <pre><code>training fisher face classifier
  size of training set is: 351 images
  predicting classification set
  Traceback (most recent call last):
    File "splitData.py", line 62, in &lt;module&gt;
      correct = run_recognizer()
    File "splitData.py", line 51, in run_recognizer
      pred, conf = fishface.predict(image)
  TypeError: 'int' object is not iterable
  </code></pre>