Scikit learn使用了基于fit
和predict
方法的非常方便的方法。我有适合于fit
和predict
格式的时间序列数据。
例如,我有以下Xs
:
[[1.0, 2.3, 4.5], [6.7, 2.7, 1.2], ..., [3.2, 4.7, 1.1]]
相应的ys
:
[[1.0], [2.3], ..., [7.7]]
这些数据具有以下含义。存储在ys
中的值形成一个时间序列。Xs
中的值是与时间相关的“因子”,已知它们对ys
中的值有一些影响(例如:温度、湿度和大气压)。
当然,现在我可以使用fit(Xs,ys)
。但是我得到了一个模型,其中ys
中的未来值只依赖于因子,而不依赖于以前的Y
值(至少是直接的),这是模型的一个限制。我想要一个模型,其中Y_n
还依赖于Y_{n-1}
和Y_{n-2}
等等。例如,我可能希望使用指数移动平均值作为模型。在scikit learn中最优雅的方法是什么
已添加
正如评论中提到的,我可以通过添加ys
来扩展Xs
。但这种方法有一定的局限性。例如,如果我将y
的最后5个值作为5个新列添加到X
,则ys
的时间顺序信息将丢失。例如,在X
中没有指示第5列中的值跟随第4列中的值,以此类推。作为一个模型,我可能希望对最后五个ys
进行线性拟合,并使用找到的线性函数进行预测。但如果我在5列中有5个值,那就不是那么简单了。
添加2
为了使我的问题更加清楚,我想举一个具体的例子。我想要一个“线性”模型,其中y_n = c + k1*x1 + k2*x2 + k3*x3 + k4*EMOV_n
,其中EMOV_n只是一个指数移动平均值。如何在scikit learn中实现这个简单的模型?
对于指数加权移动平均值,这可能是您所要寻找的:
这里,
com
是一个参数,您可以阅读关于here。然后,您可以将EMOV_n
组合到Xs
,使用如下方法:然后您可以查看各种线性模型here,并执行如下操作:
祝你好运!
根据维基百科的说法,EWMA对固定数据的处理效果很好,但在趋势或季节性因素存在的情况下,效果并不如预期。在这些情况下,应该分别使用二阶或三阶EWMA方法。我决定看看pandas
ewma
函数,看看它是如何处理趋势的,这就是我想到的:如你所见,EWMA逆势上坡和下坡。我们可以纠正这个问题(不必自己实现二阶方案),方法是将EWMA取两个方向,然后取平均值。我希望你的数据是固定的!
相关问题 更多 >
编程相关推荐