title: scikit-learn cross validation custom splits for time series data
body: <p>I'd like to use scikit-learn's <a href="http://scikit-learn.org/stable/modules/generated/sklearn.grid_search.GridSearchCV.html" rel="noreferrer">GridSearchCV</a> to determine some hyper parameters for a random forest model.  My data is time dependent and looks something like</p>
  
  <pre><code>import pandas as pd
  
  train = pd.DataFrame({'date': pd.DatetimeIndex(['2012-1-1', '2012-9-30', '2013-4-3', '2014-8-16', '2015-3-20', '2015-6-30']), 
  'feature1': [1.2, 3.3, 2.7, 4.0, 8.2, 6.5],
  'feature2': [4, 4, 10, 3, 10, 9],
  'target': [1,2,1,3,2,2]})
  
  &gt;&gt;&gt; train
          date  feature1  feature2  target
  0 2012-01-01       1.2         4       1
  1 2012-09-30       3.3         4       2
  2 2013-04-03       2.7        10       1
  3 2014-08-16       4.0         3       3
  4 2015-03-20       8.2        10       2
  5 2015-06-30       6.5         9       2
  </code></pre>
  
  <p>How can I implement the following cross validation folding technique?</p>
  
  <pre><code>train:(2012, 2013) - test:(2014)
  train:(2013, 2014) - test:(2015)
  </code></pre>
  
  <p>That is, I want to use 2 years of historic observations to train a model and then test its accuracy in the subsequent year.</p>