根据时间序列中先前的频率预测下一个日期



我有一个数据帧,看起来像下面的那个。数据框架有更多的功能,但我只是为了简化起见才展示这些功能。

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中输入最后一个日期和预测频率并获得下一个日期?

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

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

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

你可以使用自己的最佳猜测来估计这些情况(也许使用最佳/最坏场景的范围,让使用模型的人决定使用哪个(,也可以使用时间序列建模方法,通过学习今天的模式对未来意味着什么来预测未来6个月。

最新更新