我们用 Power BI 实现未来几年天猫双十一销售额预测,基于三次方程进行训练和预测。三次方程的公式如下:
1. 2022年双十一预测值分布图
基于三次方程预测2022年双十一销售额为7345亿。
2. 2022年双十一预测值代码
# 使用import导入numpy和matplotlib.pyplot库
import numpy as np
import matplotlib.pyplot as plt
# 定义一个一维数组data导入年份 销售额
data = np.array([[9,0.5],[10,9.36],[11,52],[12,191],[13,350],[14,571],[15,912],
[16,1207],[17,1682],[18,2135],[19,2684],[20,4982],[21,5403],])
# 将所有数据绘制出来
plt.scatter(data[:, 0], data[:, 1], c="r")
#plt.show()
#引入库sympy的变量与函数
from sympy import *
#通过库中的symbols()函数创建参数变量
m1,m2, m3 ,b = symbols ( 'm1,m2,m3,b' )
init_printing(pretty_print=True)
x_i,real_i,i = symbols("x_i,real_i,i")
#定义上面公式
MSE = Sum((m1*x_i**3 + m2*x_i**2 + m3*x_i + b - real_i)**2,(i,2009,2021))
MSE
#初始化参数
m1,m2,m3,b = 1,1,1,1
learning_rate = 0.000000001
def gradientdecent():
global m1, m2, m3, b
m1slop , m2slop, m3slop , bslop = 0, 0, 0, 0
mse = 0
#计算导数
for x,real in data:
# b+m1x3i+m2x2i+m3xi-reali
mse += (b+m1*x**3 + m2*x**2 + m3*x - real)**2
# 2x3i(b+m1x3i+m2x2i+m3xi-reali)
m1slop += 2*x**3*(b + m1*x**3 + m2*x**2 + m3**x -real)
m2slop += 2*x**2*(b + m1*x**3 + m2*x**2 + m3**x - real)
m3slop += 2*x**1*(b + m1*x**3 + m2*x**2 + m3**x - real)
bslop += 2*(b + m1*x**3 + m2*x**2 + m3**x - real)
#更新参数
m1 = m1 - m1slop*learning_rate
m2 = m2 - m2slop*learning_rate
m3 = m3 - m3slop*learning_rate
b = b - bslop*learning_rate
#使用循环,进行梯度下降,找到最优的4个参数
np.set_printoptions(suppress=True)
for i in range(100000):
mse = gradientdecent()
if i%100000 == 0:
print("m1={},m2={},m3={} ,b={} , mse={}".format(m1,m2,m3,b,mse))
#预测y = m1*x 3 + m2*x~2 + m3*x + b
year = 22
result = m1*year**3 + m2 * year**2 + m3*year + b
print("预测2022年天猫双十一的销售额:",result)
#历史数据
plt.scatter(data[:,0],data[:,1])
# 预测数据
plt.scatter(year, result ,c="red")
#绘制曲线
x = np.linspace(9,25,25-9+1)
y = m1*x**3 + m2 * x**2 + m3*x + b
plt.plot(x,y,c="g")
#把曲线上的点显示出数字
for a,b in zip(x,y):
plt.text(a, b+0.05, '%.0f' % b, ha='center', va= 'bottom',fontsize=11)
for a,b in zip(x,y):
plt.text(a, b+0.05, '%.0f' % b, ha='center', va= 'bottom',fontsize=11)
#将以上处理后的数据在PowerBI上展示出来
plt.show()
预测2022年双十一销售额为7345亿。
3. 设计界面展示