python rolling regression. 使用 Python 实现滚动回归操作
滚动回归
所谓滚动回归,通常用在时间序列上。记当前时刻为t,回归时长为s,则一直使用当作自变量来预测。使用滚动回归的目的通常是为了避免未来函数对于回归的影响。
具体来说,如果我们直接用所有数据来建立线性回归模型,则回归系数,是关于所有x与所有y的函数。然而,我们在时是不知道未来的数据点的!如果使用全部数据进行回归则相当于未卜先知,会造成严重的过拟合。
Python实现
之前python的pandas与statsmodels库均支持滚动回归,但是现在两个都不支持。因此如果大家使用的是最新版的pandas与statsmodels,那么网上的那些做法均没有用。
目前我找到的唯一可以实现滚动回归的python库是pyfinance,代码如下:
frompyfinance.olsimportPandasRollingOLS results=PandasRollingOLS(x,y,window)#window是滚动回归的自变量个数 results.solution#每一步估计的截距与斜率 results.beta#每一步估计的斜率 results.alpha#每一步估计的截距 results.predicted#每一步估计的样本内预测值
补充知识:python实现字幕动态滚动和等待效果
晚上看了些python实现动态字幕效果的文章,总会提到print函数的flush=True参数,还有os.system('cls')清屏,总是迷糊,并不能实现滚动屏幕效果。经过多方思索和查找,总结如下。
1.windows平台下pycharm工具,其实加不加flush=True效果都是一样的,因为网上说,有些系统是把字符存放在缓存里不会实时显示,总是再最后才一次性把所有的缓存信息显示,这样的延迟导致看不到动态效果。经过测试,windowns平台的pycharm工具不存在此问题,加不加效果都一样。
2.回车换行符的使用:
#回车和换行的历史:#机械打字机有回车和换行两个键作用分别是:#换行'\n'就是把滚筒卷一格,不改变水平位置。(即移到下一行,但不是行首,而是和上一行水平位置一样)#回车'\r'就是把水平位置复位,不卷动滚筒。(即将光标移到行首,但是不会移到下一行,如果继续输入的话会覆盖掉前面的内容)#Enter=回车+换行(\r\n)
所以可以利用回车符,不断清除前面的字符,然后循环显示新的字符,来实现动态滚动效果。
2个实例如下:
实例1动态广告语
importtime content='钻石永久远,一颗永流传!' whileTrue: print('\r',content,end='',flush=True)#去掉flush参数效果也一样 content=content[1:]+content[0] time.sleep(0.5)
实例2等待效果
importtime whileTrue: print('钻石永久远,一颗永流传',end='') foriinrange(10): print('·',end='',flush=True)#去掉flush参数效果也一样 time.sleep(0.3) print('\r',end='')
以上这篇pythonrollingregression.使用Python实现滚动回归操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。