python - 使用 scikit 学习的线性回归进行时间序列交叉验证

标签 python pandas 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...

关于python - 使用 scikit 学习的线性回归进行时间序列交叉验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29928358/

相关文章:

python - 能够绘制为列表,无法绘制为 Pandas 系列

Python Fabric - 未找到主机

python - 给定一列具有特定值的情况下编辑数据框的行

python - Panda 的数据框将一列拆分为多列

python - Zip 参数 #2 必须支持迭代。为什么重新分配 ndarray 时会生成此错误?

python - Scikit-learn Ridge 分类器 : extracting class probabilities

Python 的 Sklearn ngram 准确度随着 ngram 长度的增加而降低

python - python中递归遍历列表

python - 提取以符号开头和结尾的子字符串并在Python中替换为变量

如果文件已存在,Python 会跳过函数