画图、最小二乘法、LinearRegression 的使用

import matplotlib.pyplot as plt
plt.figure(figsize=(8, 2),dpi=80 )
x = 销售数据[“统计日期”][:31]
y = 销售数据[“商品访客数”][:31]
plt.plot(x, y)
plt.xticks(rotation=-90);

在这里插入图片描述
from mpl_toolkits import mplot3d
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
ax = plt.axes(projection=‘3d’)
zdata = f1[“直通车展现量”]
ydata = f1[“直通车花费”]
xdata = f1[“序号”]
ax.scatter3D(xdata, ydata, zdata, c=zdata, cmap=‘Reds’)
在这里插入图片描述

plt.figure(figsize=(10, 4),dpi=80 )
a_money = G7[“直通车展现量”]
b_money = G7[“直通车花费”]
tick_label = G7[“序号”]
a=np.arange(1,62,2)
b=np.arange(1.5,63.5,2)
plt.bar(a, a_money, width=0.5, tick_label=tick_label,
label=‘展现量’)
plt.bar(b, b_money, width=0.5,
tick_label=tick_label, label=‘花费’)
plt.legend()
在这里插入图片描述

最小二乘法

from math import e # 引入自然数e
import numpy as np # 科学计算库
import matplotlib.pyplot as plt # 绘图库
from scipy.optimize import leastsq # 引入最小二乘法算法

样本数据(Xi,Yi),需要转换成数组(列表)形式

ti = np.array(f[f[“产品”]“G7”][“序号”])
yi = np.array(f[f[“产品”]
“G7”][“销量”])

需要拟合的函数func :指定函数的形状,即n(t)的计算公式

def func(params, t):
m, p, q = params
fz = (p * (p + q) ** 2) * e ** (-(p + q) * t) # 分子的计算
fm = (p + q * e ** (-(p + q) * t)) ** 2 # 分母的计算
nt = m * fz / fm # nt值
return nt

误差函数函数:x,y都是列表:这里的x,y更上面的Xi,Yi中是一一对应的

一般第一个参数是需要求的参数组,另外两个是x,y

def error(params, t, y):
return func(params, t) - y

k,b的初始值,可以任意设定, 一般需要根据具体场景确定一个初始值

p0 = [100, 0.01, 0.3]

把error函数中除了p0以外的参数打包到args中(使用要求)

params = leastsq(error, p0, args=(ti, yi))
params = params[0]

读取结果

m, p, q = params
print(‘m=’, m) # 最大市场潜力
print(‘p=’, p) # 创新系数
print(‘q=’, q)# 模仿系数

u价格因子

有了参数后,就是计算不同t情况下的拟合值

y_hat = []
for t in ti:
y = func(params, t)
y_hat.append(y)

接下来我们绘制实际曲线和拟合曲线

由于模拟数据实在太好,两条曲线几乎重合了

fig = plt.figure()
plt.scatter(ti, yi, color=‘r’, label=‘true’)
plt.plot(ti, y_hat, color=‘b’, label=‘predict’)
plt.title(‘BASS model’)
plt.legend()
在这里插入图片描述

最小二乘法

from math import e # 引入自然数e
import numpy as np # 科学计算库
import matplotlib.pyplot as plt # 绘图库
from scipy.optimize import leastsq # 引入最小二乘法算法

样本数据(Xi,Yi),需要转换成数组(列表)形式

ti = np.array(f[f[“产品”]“E3”][“序号”])[:30]
yi = np.array(f[f[“产品”]
“E3”][“销量”])[:30]

需要拟合的函数func :指定函数的形状,即n(t)的计算公式

def func(params, t):
m, p, q = params
fz = (p * (p + q) ** 2) * e ** (-(p + q) * t) # 分子的计算
fm = (p + q * e ** (-(p + q) * t)) ** 2 # 分母的计算
nt = m * fz / fm # nt值
return nt

误差函数函数:x,y都是列表:这里的x,y更上面的Xi,Yi中是一一对应的

一般第一个参数是需要求的参数组,另外两个是x,y

def error(params, t, y):
return func(params, t) - y

k,b的初始值,可以任意设定, 一般需要根据具体场景确定一个初始值

p0 = [100, 0.01, 0.3]

把error函数中除了p0以外的参数打包到args中(使用要求)

params = leastsq(error, p0, args=(ti, yi))
params = params[0]

读取结果

m, p, q = params
print(‘m=’, m) # 最大市场潜力
print(‘p=’, p) # 创新系数
print(‘q=’, q)# 模仿系数

u价格因子

有了参数后,就是计算不同t情况下的拟合值

y_hat = []
for t in ti:
y = func(params, t)
y_hat.append(y)

接下来我们绘制实际曲线和拟合曲线

fig = plt.figure()
plt.scatter(ti, yi, color=‘r’, label=‘true’)
plt.plot(ti, y_hat, color=‘b’, label=‘predict’)
plt.title(‘BASS model’)
plt.legend()
在这里插入图片描述

LinearRegression

lr=LinearRegression().fit(x_train,y_train)
y_lr_predict = lr.predict(x_test)
print(“lr的均方误差为:”,mean_squared_error(y_test,y_lr_predict))
plt.figure(figsize=(8,4),dpi=100)
plt.title(“LinearRegression”)
plt.plot(y_test,y_lr_predict, ‘*r’)
plt.plot([y_test.min(), y_test.max()], [y_test.min(), y_test.max()], ‘b-.’, lw=4) # y=x
plt.ylabel(“Predieted Price”)
plt.xlabel(“Real Price”)
plt.show()
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值