2 回答

TA贡献1864条经验 获得超6个赞
您对时间序列使用了完全错误的方法。
让我们看看线性回归在做什么:
julian_datetime label
0 2.452951e+06 6.696136
1 2.452951e+06 -5.293884
2 2.452951e+06 5.679681
3 2.452951e+06 4.411278
4 2.452951e+06 5.837476
所以基本上他会发现 你和f(x) = a*x +b你的功能。他会从 中最小化损失,所以问题是他会找到另一个数字。但在时间序列中,您必须处理数据流!现在根本没有时间。x= julian_datetimef(x)= labellabel-prediction2.45,...,2.45
使其成为时间序列的一个示例(这不是最好的方法)是将所有前面的 2 个值作为特征添加到其中,使其看起来像:
julian_datetime julian_datetime-1 julian_datetime-2 label
0 2.452951e+06 6.696136
1 2.452951e+06 2.452951e+06 -5.293884
2 2.452951e+06 2.452951e+06 2.452951e+06 5.679681
3 2.452951e+06 2.452951e+06 2.452951e+06 4.411278
顺便说一句,为什么朱利安日期时间总是相同的值?啊,更糟糕的是!您必须使用标签列作为以前的值,以便它看起来像:
y y-1 y-2
0 6.696136
1 -5.293884 6.696136
2 5.679681 -5.293884 6.696136
3
那么你的试炼就是y-1, y-2你的预测y

TA贡献1777条经验 获得超3个赞
除非您提供产生这些预测值的测试集,否则我无法确定。
根据代码,您正在拟合具有单个自变量的模型julian_datetime
来预测您的因变量label
。根据您的样本数据,该julian_datetime
变量具有大量重复值。julian_datetime
如果您对测试集中的每个观察值具有相同的值,我不会感到惊讶。这将导致相同的预测,因为每个输入都是相同的。
如果是这种情况,并且您仍然不相信,请尝试将一些观察结果从您的训练集中移动到具有不同julian_datetime
值的测试集中,以查看您是否收到不同的预测。您很可能会注意到对这些新观察结果的不同预测。结果,您将看到您的生产线发生了变化。
更新
我相信这条线没有改变有几个原因:
我相信您的训练集总共包含大约 140000 个观察值,而您的测试集包含 25-100 个观察值。此外,您的绘图仅包含有关测试集的数据。因此,您的预测似乎没有变化,因为您在一个非常小的窗口上绘制了一条线性回归线。
如果时间对您的反应完全没有影响,您的线性回归线将再次变得相当平坦。
如果您仍想继续构建线性回归模型,我建议您执行以下操作:
确保你的测试集足够大,可以注意到预测的变化,否则你会遇到同样的问题。
尝试在模型中包含 sin 和 cos 函数,以考虑可能的季节性
添加回答
举报