title: xgboost watchlist parameter: DMatrix object is not iterable
body: <p>I am trying to train a xgboost model on a dataset <code>X-train, X_test</code>. 
  Code:</p>
  
  <pre><code>xgb_params = {
      "objective": "multi:softmax",
      "eta": 0.3,
      "num_class": 62,
      "max_depth": 10,
      "nthread": 4,
      "eval_metric": "merror",
      "print.every.n": 1
      #"silent": 1
  }
  num_rounds = 2
  
  mask = np.random.choice([False, True], len(X_train), p=[0.75, 0.25])
  not_mask = [not i for i in mask]
  
  dtrain = xgb.DMatrix(X_train[not_mask], label=y[not_mask])
  dtrain_watch = xgb.DMatrix(X_train[mask], label=y[mask])
  dtest = xgb.DMatrix(X_test)
  
  gbdt = xgb.train(xgb_params, dtrain, num_rounds, dtrain_watch)
  preds = gbdt.predict(dtest)
  </code></pre>
  
  <p>But I am getting error: <code>TypeError: 'DMatrix' object is not iterable</code> on the second last line.</p>
  
  <p>What needs to be done?</p>
  
  <p>EDIT:
  If I typecast to <code>np.array</code> deliberately, I get <code>TypeError: iteration over a 0-d array</code></p>
  
  <p>EDIT 2:
  If I avoid <code>DMatrix</code> fully this way: <code>watchlist = list(np.append(X_train[mask], np.matrix(y[mask]).transpose(), axis=1))</code> I get another error </p>
  
  <pre><code>xgboost.py", line 340, in __init__
      raise TypeError('invalid cache item: {}'.format(type(d).__name__))
  TypeError: invalid cache item: matrix
  </code></pre>