使用来自scikit learn的线性回归进行时间序列交叉验证



我正在使用Scikit Learn的线性回归模型来解释时间序列:

from sklearn import linear_model
import numpy as np
X = np.array([np.random.random(100), np.random.random(100)])
y = np.array(np.random.random(100))
regressor = linear_model.LinearRegression()
regressor.fit(X, y)
y_hat = regressor.predict(X)

我想交叉验证预测。据我所知,我不能使用 sklearn 中的cross_val(如 Kfold),因为它会随机分解结果,并且我需要折叠是按顺序排列的。例如

data_set = [1 2 3 4 5 6 7 8 9 10]
# first train set
train = [1]
# first test set
test = [2 3 4 5 6 7 8 9 10]
#fit, predict, evaluate
# train set
train = [1 2]
# test set
test = [3 4 5 6 7 8 9 10]
#fit, predict, evaluate
...
# train set
train = [1 2 3 4 5 6 7 8]
# test set
test = [9 10]
#fit, predict, evaluate

是否可以使用 sklearn 来做到这一点?

这种折叠不需要scikit。切片就足够了,例如:

step = 1 
for i in range(0, len(data_set), step):
  train = dataset[:i]
  test = dataset[i:]
  # etc...

相关内容

  • 没有找到相关文章

最新更新