赞
踩
TimeSeriesSplit是k-fold的一个变体,它首先返回k折作为训练数据集,并且 (k+1) 折作为测试数据集。请注意,与标准的交叉验证方法不同,连续的训练集是超越前者的超集。另外,它将所有的剩余数据添加到第一个训练分区,它总是用来训练模型。这个类可以用来交叉验证以固定时间间隔观察到的时间序列数据样本。(机器学习中的交叉验证
)
示例:
据我观测,它是像下图这样子分的。
若用girdsearchcv进行调参,怎么将交叉验证的cv设置为时间序列的
my_cv = TimeSeriesSplit(n_splits=2).split(x_train)
cv_params = {'min_child_weight': [1,2,3,4,5,6,7]}
other_params = {'learning_rate': 0.1, 'n_estimators': 1000, 'max_depth': 4, 'min_child_weight': 2, 'seed': 0,
'subsample': 0.8, 'colsample_bytree':2\ 0.9, 'gamma': 0, 'reg_alpha': 0.1, 'reg_lambda': 2}
model = XGBRegressor(**other_params)
optimized_GBM = GridSearchCV(estimator=model, param_grid=cv_params, scoring='r2', cv=my_cv, verbose=1, n_jobs=4)
optimized_GBM.fit(np.array(x_train), np.array(y_train))
model = optimized_GBM.best_estimator_
参考一。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。