python指数平滑预测,简单平均法,移动平均法,指数平滑法属于

  python指数平滑预测,简单平均法,移动平均法,指数平滑法属于

  文章目录1.实现移动平均代码2.实现指数平滑代码: 3.数据集的检查代码:结果移动平均指数平滑

  1.实现移动平均

  答一次移动平均,取多个n值,计算标准差;

  b)二次移动平均,计算参数甲,乙,进行预测;

  代码:

  # -*-编码=utf-8 -*-#姓名:陈楠#日期:2021/4/8 14:28导入csvimport matplotlib.pyplot作为工厂编号读取数据文件打开(r d:\ Downloads \ train。CSV ,编码= utf-8 )作为f:reader=CSV。reader(f)header _ row=next(reader)counts=[]ids。append(int(row[0]))计数。append(int(row[2])PLT。plot(id,counts,color=blue ,linewidth=1,linestyle=:,marker=,)len=len(counts)sing movings=[]pos=0分钟一次移动平均对于范围内的n(2,201):单次移动=[]MSE _ sum=0对于范围内的I(n-1,长度):sum=0对于范围内的j(0,n):sum=sum(counts[I-j])singe移动。append(int(sum/n))单一移动。追加(单次移动)#求解活力中x,y的MSE(range(len(counts)- 1,n - 1,- 1),range(len(singemoving) - 2,- 1,-1)):MSE _ sum=MSE _ sum((counts[x]-singe moving[y])* * 2)MSE=MSE _ sum/(len(counts)-n)sq _ MSE=MSE * * 0.5 if MSE min:min=MSE pos=n print( n=% s标准差=%s mse=%s % (n,sq_mse,mse)) #打印结果打印( n=%s一次移动平均法的预测值为:%s % (n,singe moving[len(singe moving)-1])# PLT。plot(ids[n-1:],single moved,color=red ,linewidth=1,linestyle=:,marker=,,标签=一次移动平均法)# 二次移动平均# 选取均方误差(均方误差)最小的值计算二次移动平均n=possinge moving=singe movings[n-2]两次移动=[]对于范围内的I(n-1,len(singe moving)):sum=0对于范围内的j(0,n):sum=sum singe moving[I-j]两次移动。append(int(sum/n))。二次移动平均预测值a=单次移动[len(单次移动)-1]* 2-两次移动[len(两次移动)-1]b=(2/(n-1))*(单次移动[len(单次移动)-1)-两次移动[len(两次移动)-1])x=a b打印( n=% s二次移动平均法的预测值为:%s % (n,x)) 2 .实现指数平滑答一次指数平滑,取多个a值;

  b)二次指数平滑(可选);

  代码:# -*-编码=utf-8 -*-#姓名:陈楠#日期:2021/4/9 10:56导入csvimport matplotlib.pyplot作为工厂编号读取数据文件打开(r d:\ Downloads \ train。CSV ,编码= utf-8 )作为f:reader=CSV。对于reader:ids中的行,reader(f)header _ row=next(reader)counts=[]ids=[]。append(int(row[0]))计数。append(int(row[2])#一次指数平滑法s=[]list_a=[2/(len(counts) 1),0.1,0.2,0.3,0.4,0.5,0.8,0.9]# colors=[棕色,绿色,红色,灰色,黄色]#取初始值为列表_a中a的x0:S1=[计数[0]]对于范围(0,len(计数)):tmp=a *计数[I](1-a)* S1[I]S1。append(tmp)s . append(S1)for I in range(0,len(list _ a)):s _ I=s[I]print( a=% s一次指数平滑法的预测值为:%s % (list_a[i],s _ I[len(s _ I)-1])# PLT。plot(ids,s_i[1:],label=a=%s % a,color=colors[i],linewidth=1,linestyle=:,marker=,)# plt.show()#二次指数平滑法twice _ s=[]j=0 for a in list _ a:S2=[counts[0]]single _ s=s[j]for I in range(1,len(counts)):tmp=a * single _ s[I](1-a)* S2[I-1]S2。append(tmp)twice _ s . append(S2)j=j 1 for I in range(0,len(list _ a)):single=s[I]twice=twice _ s[I]at=2 * single[len(single)-1]-twice[len(twice)-1]Bt=(list _ a[I]/1-list _ a[I])/(single[len(single)-1)-twice[len(twice)-1])x=at Bt print( a=% s二次指数平滑法的预测值为% s"%(list _ a[I],x)) 3 .数据集的检查代码:# -*-编码=utf-8 -*-#姓名:陈楠#日期:2021/4/10 9:52导入熊猫作为pdimport matplotlib.pyplot作为工厂编号检查数据集是否存在空缺数据=PD。read _ CSV(r d:\ Downloads \ train。CSV’)总计=数据。为null().sum().排序值(升序=False)打印(合计)#绘制散点图观察是否存在偏离值var= ID data1=PD。concat([data[ Count ],data[var]],axis=1)data1。剧情。scatter(x=var,y=Count ,ylim=(0,4000),s=1)plt.show()#统计某一列中各个元素值出现的次数c=数据[计数]。value_counts()print(c)#列出数据的偏斜度ske=data[Count].倾斜()打印(计数列的偏斜度%s % ske)#计算数数和编号的相关系数cor=数据[计数].更正(数据[ID])打印(计数列与身份列的相关系数为% s“% cor”结果移动平均

  指数平滑

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: