根据历年双十一数据进行多项式回归:分别用R、Spss、python进行了实现,发现Spss结果更好解释,拟合度达到0.99,将时间数据进行转为1,2,...
python的多项式回归结果还没太看懂,因为与R运行结果的回归系数不一样,希望看到的小伙伴能帮忙解释下;plt.scatter(x,y):圆形点;plt.plot(x,y,'*'):星形点
import matplotlib.pyplot as plt
import numpy as np
from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei']
matplotlib.rcParams['axes.unicode_minus']=False
x=np.array([year for year in range(2009,2019)])
y=np.array([0.5,9.36,52,191,352,571,912,1207,1682.69,2135])
z1=np.polyfit(x,y,3)#用三次多项式拟合
p1=np.poly1d(z1) # 生成多项式对象
yvals=p1(x) #拟合值
plt.scatter(x,y,label='实际销售额')
plt.plot(x,yvals,'r',label='拟合销售额')
plt.xlabel('年份')
plt.ylabel('销售额')
plt.legend(loc=4) #指定legend的位置
plt.title('2009-2018淘宝双十一销售额拟合曲线')
plt.show()
print('拟合多项式:\n',p1) #打印拟合多项式
print("-"*40)
print('2019年预测值:\n',p1(2019))
# x=2019
# y=0.159*(x**3) - 930.2*(x**2) + (1.813e+06)*x - (1.176e+09)
# print(y)
输出结果:
拟合多项式:
3 2
0.159 x - 930.2 x + 1.813e+06 x - 1.176e+09
----------------------------------------
2019年预测值:
2689.013335466385
Spss进行二次、三次多项式回归结果: