【问题标题】:TypeError: can only concatenate list (not "str") to list - Autoregressive modelsTypeError:只能将列表(不是“str”)连接到列表 - 自回归模型
【发布时间】:2021-02-14 09:59:17
【问题描述】:

亲爱的, 当我尝试拟合模型时,我在时间序列数据集上应用自回归模型,我在标题中提到了这个错误。 请在下面找到代码。

dataset = dataset.values
# split into train and test sets
train_size = int(len(dataset) * 0.67)
test_size = len(dataset) - train_size
train, test = dataset[0:train_size,:], dataset[train_size:len(dataset),:]
print(len(train), len(test))

from matplotlib import pyplot
from statsmodels.tsa.ar_model import AutoReg
from sklearn.metrics import mean_squared_error
from math import sqrt

# train autoregression
model = AutoReg(train, lags=20)
model_fit = model.fit()

收到错误:

TypeError                                 Traceback (most recent call last)
<ipython-input-13-94515331b50e> in <module>
      1 # train autoregression
----> 2 model = AutoReg(train, lags=20)
      3 model_fit = model.fit()

TypeError: can only concatenate list (not "str") to list

请告知如何解决此问题。

【问题讨论】:

  • 我怀疑您的火车数据集有问题。在此处显示其中的一些(前几行)可能会有所帮助,以便您扫描整个内容以查看它是否看起来像您所期望的那样
  • 嗨,我如何附加数据集?
  • 训练的样本输出
  • 数组([[ 9.77781172e+01, 2.50000000e-01, 1.23322846e+02, 1.13850000e+02, 8.72000000e+01], [ 1.10163345e+02, -6.600000e, -6.600000, 9.49962845e+01, 1.15420000e+02, 8.70000000e+01], [ 7.20595094e+01, 1.00100000e+01, 6.70275726e+01, 1.16990000e+02, 8.69000000e+

标签: python statsmodels autoregressive-models


【解决方案1】:

确实,如上所述,查看您的数据集,您的训练和测试是 2D 数组,而 AutoReg 需要 1D,所以您应该尝试这个答案中的建议,看看它是否有效? – 皮特巴格

【讨论】:

    【解决方案2】:

    正如评论所说,很高兴看到dataset。但是这一行

    train, test = dataset[0:train_size,:], ...
    

    让我认为数据集是二维的,而文档 here 表明您需要一维

    所以也许你想要

    train, test = dataset[0:train_size,0], ...
    

    或数据集的其他列(不是索引 0)

    【讨论】:

    • 如何附加数据集?
    • 复制并粘贴前几行,使用 markdown 就像对代码所做的那样
    • 确实,如上所述,查看您的数据集,您的训练和测试是 2D 数组,而 AutoReg 需要 1D,所以您应该尝试这个答案中的建议,看看它是否有效?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-15
    • 1970-01-01
    • 2020-06-10
    • 2020-06-02
    • 1970-01-01
    • 2021-08-25
    相关资源
    最近更新 更多