python - 如何为不同数据集(python)找到sarimax模型的最佳顺序和季节性顺序
问题描述
我正在尝试根据不同数据集的给定历史数据来预测未来数据。
warnings.filterwarnings("ignore")
mod = sm.tsa.statespace.SARIMAX(
dataset,
order=(1,0, 0),
seasonal_order=(0, 0, 0, 12),
enforce_stationarity=False,
enforce_invertibility=False
)
results = mod.fit()
但是对于配置问题,我遇到了错误。然后随机生成订单和季节性订单并检查是否有错误。
p = d = q = range(0, 2)
pdq = list(itertools.product(p, d, q))
seasonal_pdq = [(x[0], x[1], x[2], 12) for x in list(itertools.product(p, d, q))]
np.random.shuffle(pdq)
np.random.shuffle(seasonal_pdq)
results, finished = False, False
for iii in pdq:
for jjj in seasonal_pdq:
try:
warnings.filterwarnings("ignore")
mod = sm.tsa.statespace.SARIMAX(
dataset,
order=iii,
seasonal_order=jjj,
enforce_stationarity=False,
enforce_invertibility=False
)
results = mod.fit()
dataset_pred_uc = results.get_forecast(steps=int(len(dataset)*0.8))
# prediction = dataset_pred_uc.predicted_mean
finished = True
except Exception as error:
continue
if(finished):
break
但我每次都得到不同的结果。有时结果非常好,有时比我想象的还要糟糕。
我该如何解决此类问题,其中数据集值是任意的。
解决方案
为了每次获得相同的结果,随机数应该每次都从相同的种子产生。因此,请在您的代码中设置 random.seed(例如np.random.seed(1234)
)。
推荐阅读
- android - 参数类型“Container Function(BuildContext, int)”不能分配给参数类型“Widget Function(BuildContext, int, int)”。镖
- c++ - 无法将 boost::serialization 与 Clion 和 CMAKE 链接起来
- python - C++ 有像 Python 字典这样的数据结构吗?
- python - 我会通过长期运行这个循环来堵塞我的记忆吗?
- node.js - 如何从谷歌驱动器的父文件夹中打印所有文件夹名称?
- arrays - 数组反转 - HackerRank 问题 - 使用 C 语言
- excel - 具有多个通配符匹配的 Excel 计数
- c# - 为 Task.WhenAll() 创建数组
- python - if amount == None IndentationError: unindent 不匹配任何外部缩进级别
- swift - 如何制作 JSONDecoder 实例的副本?