【问题标题】:Predict next date based on previous frequency in a time-series根据时间序列中的先前频率预测下一个日期
【发布时间】:2021-06-28 15:07:32
【问题描述】:

我有一个如下图所示的数据框。数据框具有更多功能,但我仅出于简化目的而显示。

    CODE    DATE        IND_AVG_MONTH_REC     IND_STD_MONTH_REC 
0   15295   2021-01-22  0.375                 0.382733
1   15801   2020-12-04  0.125                 0.309359
2   23369   2021-01-01  0.750                 0.216506

AVG 和 STD 是每个 COD 每月的平均值和标准差。 DATE 是用户最后一次有活动的时间。 我想根据 AVG 和最后日期预测下一个日期。

为此,我进行了线性回归并获得了预测频率。我对结果很满意,因为从预测到测试集的误差很小。 (所有值都是整数或浮点数)

# Not all features fom the data set were used
X = df[['IND_MIN_REC_VAL', 'IND_TOTAL_TERM_CALL_QTY', 'IND_TOTAL_ORIG_CALL', 'IND_VAL_LAST_REC', 'OLD', 'IND_SMS_QTY', 'IND_TOTAL_SMS_QTY', 'IND_MIN_REC_QTY_DAY', 'IND_TOTAL_GPRS_QTY', 'IND_GPRS_QTY', 'IND_AVG_MONTH_GPRS_QTY', 'IND_AVG_MONTH_SMS', 'IND_STD_MONTH_SMS', 'IND_STD_MONTH_GPRS_QTY', 'IND_QTD_LAST_REC', 'COD_TAR', 'COD_CART', 'IND_TERM_CALL_QTY', 'IND_MAX_REC_VAL', 'IND_AVG_TERM_CALL_DUR', 'IND_STD_TERM_CALL_DUR', 'IND_ORIG_CALL_QTY', 'IND_AVG_MONTH_TERM_CALL', 'IND_STD_MONTH_TERM_CALL', 'IND_MAX_REC_QTY_DAY', 'IND_AVG_ORIG_CALL_DUR', 'IND_STD_ORIG_CALL_DUR', 'IND_AVG_MONTH_PRIG_CALL', 'IND_STD_ORIG_CALL', 'IND_AVG_GPRS_DUR', 'IND_STD_GPRS_DUR', 'IND_STD_MONTH_REC_VAL', 'IND_STD_MONTH_REC', 'IND_AVG_MONTH_REC_VAL']]
y = df['IND_AVG_MONTH_REC']

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

model = LinearRegression().fit(X_train, y_train)

y_preds = model.predict((X_test))

然后计算错误指标并得到以下我满意的结果:

MAE: 0.11467427514645877
MSE: 0.03279457004316404
RMSE: 0.1810927111817702

如果我已经有了预测的频率,如何获得下一个(预测的)日期?

有没有办法在 python/pandas 中输入最后日期和预测频率并获取下一个日期?

【问题讨论】:

  • 由于您没有显示任何代码,因此很难为您提供帮助。请发布复制模型所需的最少代码,也许有人会回答。
  • 嗨,刚刚编辑了更多信息。

标签: python pandas machine-learning scikit-learn time-series


【解决方案1】:

我认为您遇到了使用线性回归来尝试解决时间序列问题的问题。

想象一下预测房价。我们可以知道卧室的数量,是否有车库,院子的大小,当前的利率,当前的失业率,当前市场上的房屋数量等。最终我们会得到一个很好的预测。

现在假设您想预测未来 6 个月的房价。你仍然知道卧室的数量,以及它是否有车库,但你不知道未来的利率、失业率或市场上会有多少房子。

您可以使用自己的最佳猜测来估计这些(可能使用最佳/最差场景的范围,让使用模型的人决定使用哪个),或者您可以使用时间序列建模方法并使用它来预测通过了解今天的模式对未来的意义,向前推进 6 个月。

【讨论】:

  • 您建议更改为 ARIMA、GARCH 或 LSTM 等模型,而忽略预测下一个日期的回归?有没有你推荐阅读的链接/帖子或书籍?感谢您的回答。
  • @Peter 我建议同时查看并确定最适合您的方法。你可以谷歌如何设置时间序列模型,那里有很多很棒的教程。
  • 然后我意识到我可以非常简单地用我展示的数据获得下一个日期啊哈哈但我也会通过时间序列模型来分析。据我所知,我所做的方式需要更多的预处理,因为时间序列算法,对于我想要的最终结果,需要更多的改进。不过谢谢你的回答!
猜你喜欢
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
  • 2018-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-04
相关资源
最近更新 更多