Возможно, я делаю что-то не так, но мне кажется, что в текущей реализации строка my_cv = TimeSeriesSplit (n_splits = 2) .split (X) должна быть исправлена на my_cv = TimeSeriesSplit (n_splits = 2). В противном случае он выдаст ошибку
алсклеарн документы дляTimeSeriesSplit
идокументы для перекрестной проверки но я не смог найти работающий пример.
Я использую sklearn версии 0.19.
Это моя установка
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)
дает:
[0 1] [2 3]
[0 1 2 3] [4 5]
Если я попробую:
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)
это дает:TypeError: object of type 'generator' has no len()
Я получаю проблему:GridSearchCV
пытается позвонитьlen(cv)
ноmy_cv
итератор без длины. Однакодокументы дляGridSearchCV
заявить, что я могу использовать
int, генератор перекрестной проверки или итеративный, необязательный
Я пытался с помощьюTimeSeriesSplit
без.split(X)
но это все еще не сработало.
Я уверен, что я пропускаю что-то простое, спасибо!