Como uso um TimeSeriesSplit com um objeto GridSearchCV para ajustar um modelo no scikit-learn?
Eu procurei nodocumentos do sklearn paraTimeSeriesSplit
e adocumentos para validação cruzada mas não consegui encontrar um exemplo de trabalho.
Estou usando a versão 0.19 do sklearn.
Esta é a minha configuração
import xgboost as xgb
from sklearn.model_selection import TimeSeriesSplit
from sklearn.grid_search import GridSearchCV
import numpy as np
X = np.array([[4, 5, 6, 1, 0, 2], [3.1, 3.5, 1.0, 2.1, 8.3, 1.1]]).T
y = np.array([1, 6, 7, 1, 2, 3])
tscv = TimeSeriesSplit(n_splits=2)
for train, test in tscv.split(X):
print(train, test)
dá:
[0 1] [2 3]
[0 1 2 3] [4 5]
Se eu tentar:
model = xgb.XGBRegressor()
param_search = {'max_depth' : [3, 5]}
my_cv = TimeSeriesSplit(n_splits=2).split(X)
gsearch = GridSearchCV(estimator=model, cv=my_cv,
param_grid=param_search)
gsearch.fit(X, y)
dá:TypeError: object of type 'generator' has no len()
Eu recebo o problema:GridSearchCV
está tentando ligarlen(cv)
masmy_cv
é um iterador sem comprimento. No entanto, odocumentos paraGridSearchCV
estado em que posso usar um
int, gerador de validação cruzada ou um iterável, opcional
Eu tentei usarTimeSeriesSplit
sem o.split(X)
mas ainda não funcionou.
Tenho certeza que estou ignorando algo simples, obrigado !!