【问题标题】:Time series cross-validation using linear regression from scikit learn使用来自 scikit learn 的线性回归的时间序列交叉验证
【发布时间】:2015-07-07 19:57:14
【问题描述】:

我正在使用 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 做到这一点?

【问题讨论】:

    标签: python pandas scikit-learn


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢!我相信确实可以这样做。我希望 scikit-learn 能够准备好一些东西,以便我可以将它与其他自动验证方法一起使用。
    猜你喜欢
    • 2021-01-25
    • 2020-04-06
    • 2018-04-02
    • 2014-07-30
    • 2018-12-04
    • 2016-10-01
    • 2017-03-30
    • 2016-04-25
    • 2018-10-15
    相关资源
    最近更新 更多