我有一个时间序列预测应用程序,其中的算法可以从2个选项中选择:
- sklearn线性回归
- 统计模型ARIMA与SARIMAX(基于数据的季节性)
初始化类对象并调用fit函数时,没有属性来设置seed,因此我将NumPy随机seed设置为固定seed:np.random.seed(123)
此种子在应用程序的第一个入口点中全局设置。
问题是预测的结果在不同的机器之间是不同的,尽管我们在依赖于Pipfile的Docker Image中运行,所以所有的依赖项都有相同的版本+python版本也是相同的(3.9):
numpy = "==1.22.3"
scikit-learn = "==1.1.1"
statsmodels = "==0.13.2"
scipy = "==1.9.3"
预测值的差异对于我们应用这两种算法也很重要。
| 本地Windows 10| Azure |
| - -|- -|
| 小行星8499|小行星12693|
| 小行星140277|小行星41278|
有人能支持吗?
更新代码片段+示例可在此处找到:
第一次
1条答案
按热度按时间t2a7ltrp1#
感谢@NickODell的评论,问题已解决,如下所示:
对于ARIMA/SARIMAX模型,应使用特定种子定义随机状态,然后将其传递给
pm.auto_arima
函数。原因是pm.auto_arima
使用train_test_split
函数(通常使用种子)来查找最佳模型。1.线性回归
对于线性回归,通过停用截距拟合来解决该问题,因为它包含许多平均和移位计算,并且这导致不同操作系统之间的预测值中的一些差异。