sklearn docs for TimeSeriesSplit
とdocs for cross-validationを検索しましたが、実際の例は見つかりませんでした。Scikit-learnでモデルを調整するには、GridSearchCVオブジェクトでTimeSeriesSplitを使用するにはどうすればよいですか?
私はsklearnバージョン0.19を使用しています。私がしようとした場合
[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
がある
この
は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)
が与える私の設定ですt電話をかけてlen(cv)
と呼んでいますが、my_cv
は長さのないイテレータです。しかし、私は
int型、クロスバリデーション発生器または反復可能な、オプションの
を使用することができますdocs for GridSearchCV
状態は私が.split(X)
なしTimeSeriesSplit
を使用してみましたが、それはまだ動作しませんでした。
私は何かを見落としていると確信しています、感謝!
は 'my_cv = [(列車、テスト)列車のため、試験TimeSeriesSplitに(n_splits = 2).split(X)を使用してみてください] ' –
が動作します、ありがとう!しかし、関数はイテレータで動作してはいけませんか?観測の数が多い場合(折り畳みの数が多い場合は悪化する)、可能であれば、大きな配列をメモリに保持しないでください。 – cd98
はい、そうです。 scikit-learn githubページに問題を投稿する必要があります。 –