title: Sklearn: Cross validation for grouped data
body: <p>I am trying to implement a cross validation scheme on grouped data. I was hoping to use the GroupKFold method, but I keep getting an error. what am I doing wrong?
  The code (slightly different from the one I used--I had different data so I had a larger n_splits, but everythign else is the same)</p>
  
  <pre><code>from sklearn import metrics
  import matplotlib.pyplot as plt
  import numpy as np
  from sklearn.model_selection import GroupKFold
  from sklearn.grid_search import GridSearchCV
  from xgboost import XGBRegressor
  #generate data
  x=np.array([0,1,2,3,4,5,6,7,8,9,10,11,12,13])
  y= np.array([1,2,3,4,5,6,7,1,2,3,4,5,6,7])
  group=np.array([1,0,1,1,2,2,2,1,1,1,2,0,0,2)]
  #grid search
  gkf = GroupKFold( n_splits=3).split(x,y,group)
  subsample = np.arange(0.3,0.5,0.1)
  param_grid = dict( subsample=subsample)
  rgr_xgb = XGBRegressor(n_estimators=50)
  grid_search = GridSearchCV(rgr_xgb, param_grid, cv=gkf, n_jobs=-1)
  result = grid_search.fit(x, y)
  </code></pre>
  
  <p>the error:</p>
  
  <pre><code>Traceback (most recent call last):
  
  File "&lt;ipython-input-143-11d785056a08&gt;", line 8, in &lt;module&gt;
  result = grid_search.fit(x, y)
  
  File "/home/student/anaconda/lib/python3.5/site-packages/sklearn/grid_search.py", line 813, in fit
  return self._fit(X, y, ParameterGrid(self.param_grid))
  
   File "/home/student/anaconda/lib/python3.5/site-packages/sklearn/grid_search.py", line 566, in _fit
  n_folds = len(cv)
  
  TypeError: object of type 'generator' has no len()
  </code></pre>
  
  <p>changing the line</p>
  
  <pre><code>gkf = GroupKFold( n_splits=3).split(x,y,group)
  </code></pre>
  
  <p>to </p>
  
  <pre><code>gkf = GroupKFold( n_splits=3)
  </code></pre>
  
  <p>does not work either. The error message is then:</p>
  
  <pre><code>'GroupKFold' object is not iterable
  </code></pre>