双十一刚过,天猫的销售额创新高占领了各大新闻媒体头条。但是,知乎上的一个问题对本次双十一的销售额提出了一个非常有意思的问题:《如何看待双十一销售额完美分布在三次回归曲线上且拟合高达 99.94%?是巧合还是造假?》

本文的重点放在如何用Python实现三次回归曲线的预测功能。

1.数据源

采用cnbeta新闻报道中的数据:《[直击]2019年天猫双11落幕:交易额2684亿元》

有效数字保留三位,其中2009年为0.52亿、2010年为9.36亿、2011年为52.0亿。

2.代码构建

我们将使用scikitlearn的多项式回归实现预测。训练集是2009至2014年的数据,后续测试中将陆续增加训练集至2018年。

2.1 数据预处理

构造三次多项式特征需要以列的形式,因此代码中会将numpy数组reshape成列形式。

# 数据集
datasets_X = [2009, 2010, 2011, 2012, 2013, 2014]
datasets_Y = [0.52, 9.36, 52.0, 191, 350, 571]
test_X = [2015, 2016, 2017, 2018, 2019]
real_Y =  [912, 1207, 1682, 2132, 2684]# 数据预处理
dataset_length = len(datasets_X)
test_length = len(test_X)
# 将数据转化为numpy数组,并变为列的形式
datasets_X = np.array(datasets_X).reshape([dataset_length, 1])
test_X = np.array(test_X).reshape([test_length, 1])
datasets_Y = np.array(datasets_Y)
real_Y = np.array(real_Y)

2.2 数据建模训练

这里需要注意的是,必须先构建三次多项式特征后才可放入线性回归模型。

# 数据建模
# 构造三次多项式特征
poly_reg = PolynomialFeatures(degree=3)
X_poly = poly_reg.fit_transform(datasets_X)# 使用线性回归模型学习X_poly和datasets_Y之间的映射关系
lin_reg_3 = LinearRegression()
lin_reg_3.fit(X_poly, datasets_Y) #### 2.3 数据预测训练完毕后,就可以将lin_reg_3模型用于预测:data = poly_reg.fit_transform(test_X)
pred = lin_reg_3.predict(data)
print(pred)

结果:

[ 830.64251041 1127.88919544 1457.47841358 1814.48141575 2193.96944141]

在这个训练集的基础上,预测2019年的销售额是2193亿,和真实的2684亿还是差了点。不过这样看不是很直观,让我们可视化一下数据,并逐渐增加训练集。

3.数据可视化

用 matplotlib 可以非常简单地实现这一步,设定X轴范围—绘制数据点—绘制线,最后加上横纵轴说明。

# 数据可视化
# X轴
X = np.arange(2009, 2020).reshape([-1, 1])
# 蓝色显示训练数据点
plt.scatter(datasets_X, datasets_Y, color='blue')
# 红色显示真实数据点
plt.scatter(test_X, real_Y, color='red')
# 黄色显示预测数据点
plt.scatter(test_X, pred, color='yellow')plt.plot(X, lin_reg_3.predict(poly_reg.fit_transform(X)), color='black')
plt.xlabel('年份')
plt.ylabel('销售额(亿)')
plt.show()

结果如下,蓝色点是训练值,红色点是真实值,而黄色的点是预测值:

训练集增加2015年的真实数据,结果如下:

有意思,真实值反而比预测值低了,说明2015年这一年的成交额非常优秀。

再增加2016年的真实数据到训练集里看一下。

现在,2017年、2018年的预测值非常接近,预测2019年的销售额是2507.3990亿元,离真实的2684亿差了100多亿。让我们继续增加2017年的真实数据到训练集中,预测2018年和2019年的销售额。

优秀,不过2019年预测的销售额为2750亿,略高于真实值2684亿,我们最后将2018年真实值加入到训练集中,看看2019年该模型的预测值是多少。

惊呆了,小红点和小黄点完美重合。按照这个模型,2020年的双十一销售额将会是3293亿元。

关注文章最下方Python实用宝典公众号二维码,回复 天猫销售额预测 或阅读原文下载查阅本模型完整源代码:

import matplotlib.pyplot as plt
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
from sklearn.metrics import r2_score# 指定默认字体否则图片显示不了中文
from pylab import mpl
mpl.rcParams['axes.unicode_minus'] = False # 解决符号显示问题
mpl.rcParams['font.sans-serif'] = ['FangSong']# 数据集
datasets_X = [2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018]
datasets_Y = [0.52, 9.36, 52.0, 191, 350, 571, 912, 1207, 1682, 2132]
test_X = [2019]
real_Y =  [2684]# 数据预处理
dataset_length = len(datasets_X)
test_length = len(test_X)
# 将数据转化为numpy数组
datasets_X = np.array(datasets_X).reshape([dataset_length, 1])
test_X = np.array(test_X).reshape([test_length, 1])
datasets_Y = np.array(datasets_Y)
real_Y = np.array(real_Y)# 数据建模
# 构造三次多项式特征
poly_reg = PolynomialFeatures(degree=3)
X_poly = poly_reg.fit_transform(datasets_X)# 使用线性回归模型学习X_poly和datasets_Y之间的映射关系
lin_reg_3 = LinearRegression()
lin_reg_3.fit(X_poly, datasets_Y)data = poly_reg.fit_transform(test_X)
pred = lin_reg_3.predict(data)
print(pred)# 数据可视化
# X轴
X = np.arange(2009, 2020).reshape([-1, 1])
# 蓝色显示训练数据点
plt.scatter(datasets_X, datasets_Y, color='blue')
# 红色显示真实数据点
plt.scatter(test_X, real_Y, color='red')
# 黄色显示预测数据点
plt.scatter(test_X, pred, color='yellow')plt.plot(X, lin_reg_3.predict(poly_reg.fit_transform(X)), color='black')
plt.xlabel('年份')
plt.ylabel('销售额(亿)')
plt.show()

如果你喜欢今天的Python 教程,请持续关注Python实用宝典,如果对你有帮助,麻烦在下面点一个赞/在看哦有任何问题都可以在下方留言区留言,我们会耐心解答的!

​Python实用宝典 (pythondict.com)
不只是一个宝典
欢迎关注公众号:Python实用宝典

原文来自Python实用宝典:Python 多项式预测2019年天猫销售额

Python 多项式预测2019年天猫销售额相关推荐

  1. python多项式回归预测(基于淘宝双十一数据)

    双11已经结束,按照天猫官方公布的最终数据看,今年的双11成交额为2684亿元,成功刷新了自己创下的商业纪录.然而,早在2019年4月就有网友指出,从天猫双十一的全天销售额来看,实际生产数据几乎完美地 ...

  2. 数值分析案例:Newton插值预测2019城市(Asian)温度、Crout求解城市等温性的因素系数

    数值分析案例:Newton插值预测2019城市(Asian)温度.Crout求解城市等温性的因素系数 文章目录 数值分析案例:Newton插值预测2019城市(Asian)温度.Crout求解城市等温 ...

  3. 3287亿!我用20行Python代码预测双十一成交额,猜中送红包哦

    双十一来啦,自从阿里巴巴提出双十一狂欢节之后,双十一已经逐渐摆脱了"光棍节"的代称,而是逐渐的成为全民购物狂欢的代名词.一年一度的购物狂欢,刺激着广大的消费群体,也让店家们赚的盆满 ...

  4. 3287亿!我用20行Python代码预测双十一成交额

    今天看到的一篇比较有趣又结合现在实际的Python文章,现在分享给大家. 双十一来啦,自从阿里巴巴提出双十一狂欢节之后,双十一已经逐渐摆脱了"光棍节"的代称,而是逐渐的成为全民购物 ...

  5. python3中多项式创建_机器学习入门之机器学习之路:python 多项式特征生成PolynomialFeatures 欠拟合与过拟合...

    本文主要向大家介绍了机器学习入门之机器学习之路:python 多项式特征生成PolynomialFeatures  欠拟合与过拟合,通过具体的内容向大家展现,希望对大家学习机器学习入门有所帮助. 分享 ...

  6. python模型预测_《Python机器学习——预测分析核心算法》——1.5 构建预测模型的流程...

    本节书摘来异步社区<Python机器学习--预测分析核心算法>一书中的第1章,第1.5节,作者:[美]Michael Bowles(鲍尔斯),更多章节内容可以访问云栖社区"异步社 ...

  7. 2019年天猫度软件服务年费缴纳折扣优惠及结算标准

    根据一周的意见征集,2019年天猫度软件服务年费缴纳折扣优惠及结算标准正式公布.此次天猫年费新规核心:商家服务越好,平台优惠越多. (图说:天猫年费新规中,将原本"DSR平均不低于4.6分& ...

  8. 【Mo 人工智能技术博客】采用 Python 机器学习预测足球比赛结果

    采用 Python 机器学习预测足球比赛结果 足球是世界上最火爆的运动之一,世界杯期间也往往是球迷们最亢奋的时刻.比赛狂欢季除了炸出了熬夜看球的铁杆粉丝,也让足球竞猜也成了大家茶余饭后最热衷的话题.甚 ...

  9. python模型预测足球_采用 Python 机器学习预测足球比赛结果!买谁赢就谁赢!

    采用 Python 机器学习预测足球比赛结果 足球是世界上最火爆的运动之一,世界杯期间也往往是球迷们最亢奋的时刻.比赛狂欢季除了炸出了熬夜看球的铁杆粉丝,也让足球竞猜也成了大家茶余饭后最热衷的话题.甚 ...

最新文章

  1. virus.win32.parite.H病毒的查杀方法
  2. 网络营销外包——网络营销外包专员如何系统化梳理网站优化方法
  3. 【TensorFlow】tf.nn.softmax_cross_entropy_with_logits的用法
  4. python itchat库安装_操作微信-itchat库的安装
  5. 【转】 SED多行模式空间
  6. 机器学习算法 随机森林学习 之决策树
  7. RMAN报错:ORA-19573: 无法获得 exclusive 入队
  8. 32G内存oracle内核设置,浅谈安装ORACLE时在Linux上设置内核参数的含义
  9. double类型数据保留四位小数的另一种思路
  10. excel 去掉公式保留数值的方法
  11. Registration based Few-Shot Anomaly Detection
  12. python五子棋双人对弈_用python实现双人五子棋(终端版)
  13. 从COVID-19大流行中汲取哪些教训?10种方法帮CIO预防下一次危机
  14. Flask教程(十六)RESTful-API
  15. Node 裁切图片的方法
  16. java redis使用卡死_注意!Redis使用不当可能导致应用卡死
  17. mysql如何导入生僻字_MySQL插入生僻字失败的处理方法(图)
  18. CSUST选拔赛题解之-Problem H: 逃出监狱
  19. Lending Club贷款数据分析
  20. 实用的vue插件大汇总

热门文章

  1. helm create configmap error: ConfigMap in version “v1“ cannot be handled as a ConfigMap
  2. 应用推广工具包Appboy获100万美金种子投资
  3. 麒麟信安参与共建的 中国首个桌面操作系统根社区openKylin即将发布
  4. Raft 算法详解(一)领导者选举
  5. Dhtml,html,xhtml的区别
  6. mysql 获得元素的数量_一个递归获取祖先元素值的MySQL函数范例
  7. matlab双声道转单声道,单声道和双声道的区别是什么
  8. # 计算机科学导论习题见解(机械工业)
  9. 在GitLab上创建Project完成功能步骤
  10. 定时备份脚本分享(网站数据和数据库数据)