python用最小二乘法分析数据趋势以及做数据预测
来源:互联网 发布:导弹升级数据 编辑:程序博客网 时间:2024/05/21 01:44
1. 背景
- 目前有某个产品每天的销量数据,想通过这些数据看这个产品的销量趋势。
2. 原理
参考文章:
最小二乘法
http://blog.csdn.net/yang6464158/article/details/24477547
机器学习经典算法之—–最小二乘法
http://www.cnblogs.com/iamccme/archive/2013/05/15/3080737.html
最小二乘法的本质是什么?
https://www.zhihu.com/question/37031188
3. 代码
import numpyfrom scipy.optimize import leastsqimport pylabdef zuixiaoerchen(arrayY, picTitle): print(f"arrayY: {arrayY}") print(f"picTitle: {picTitle}") if len(arrayY) == 0: return [0, 0, 0] # 取得最大销量,作为纵坐标的峰值标准 maxValue = max(arrayY) # 设置横坐标和纵坐标的值 # def arange(start=None, stop=None, step=None, dtype=None) x = numpy.arange(1, len(arrayY) + 1, 1) # def array(p_object, dtype=None, copy=True, order='K', subok=False, ndmin=0) y = numpy.array(arrayY) # 第1個拟合,设置自由度為1 : (y = ax + b) z = numpy.polyfit(x, y, 1) # z: [ 0.46428571 13.35238095] print(f"z: {z}") # 生成的多項式對象(y = ax + b) p = numpy.poly1d(z) # p: -0.1448x + 13.23 print(f"p: {p}") if z[0] > 0: # 绘制原曲线及 拟合后的曲线 # 原曲线 , 设置颜色(蓝色)和标签 pylab.plot(x, y, 'b^-', label='original sales growth') # 自由度为1的趋势曲线, 设置颜色(蓝色)和标签 pylab.plot(x, p(x), 'gv--', label=f'y = {z[0]}x + {z[1]}') # 设置图表的title pylab.title(f"picTitle: {picTitle}") # 设置横坐标,纵坐标的范围 [xmin=0, xmax=16, ymin=0, ymax=30] pylab.axis([0, len(arrayY) + 1, 0, maxValue + 1]) pylab.legend() # 保存成图片,需要提前创建文件夹 Growth,程序不会自动创建 pylab.savefig(f"Growth/{picTitle}.png", dpi=96) # 清除图表设置,以防止曲线多次累计 # 如果不清除,那么在这个程序运行起见,多次调用这个函数时,会不断将之前的曲线累计到新图片中 pylab.clf() return [z[0], z[1], maxValue]if __name__ == '__main__': # 用最小二乘法,生成销量趋势 sales = [10, 15, 8, 20, 16, 19, 11, 30, 21, 15, 19, 17, 16, 22, 17] a, b, maxSale = zuixiaoerchen(sales, "sales Growth") growth = a maxSale = maxSale print(f"growth = {growth}, maxSale = {maxSale}")# 输出结果arrayY: [10, 15, 8, 20, 16, 19, 11, 30, 21, 15, 19, 17, 16, 22, 17]picTitle: sales Growthz: [ 0.46428571 13.35238095]p: 0.4643 x + 13.35growth = 0.4642857142857137, maxSale = 30
- 生成结果
4. 拓展
- 上例中,为了查看趋势采用的是一次方程,只需要看直线斜率判断趋势。 如果是要预测数据的话,那么模拟出来的曲线应该是越接近数据本身为好。而最小二乘法模拟的是一个多项式函数,理论上来讲,多项式指数越高(上面提到的自由度越大),越接近数据本身。
阅读全文
0 0
- python用最小二乘法分析数据趋势以及做数据预测
- HDFS数据资源使用量分析以及趋势预测
- HDFS数据资源使用量分析以及趋势预测
- 用Python做数据分析
- 用Python优雅的做数据分析
- python做数据分析实例
- 用Python做数据分析:Pandas常用数据查询语法
- Python+Matplotlib+PyQt4做的简单数据预测工具
- python数据分析(预测性分析与机器学习)
- 阿里云音乐流行趋势预测数据清洗整合——纯python,没有用数据库
- 数据分析---最小二乘法和梯度下降法
- 趋势分析:大数据开发
- 使用scipy实现最小二乘法,以及通过曲线对数据进行拟合(Python)
- 用python调用R做数据分析-准备工作
- 用Python做数据分析初探(一)
- 用Python做数据分析初探(二)
- 用Python做数据分析初探(三)
- 用Python做数据分析初探(四)
- Neobotix urdf
- jupyter的TemplateAsstionErro和dead kernel
- 二叉树的层序遍历
- luogu 模拟题 青蛙叫
- oracle笔记08
- python用最小二乘法分析数据趋势以及做数据预测
- Eric Schmidt:面对未来和中国的AI竞争,美国需要团结
- 谷歌大脑负责人:深度学习需要至少十万个样本
- 安装golang项目的 GVM
- System.arraycopy的详解以及应用场景
- mysql(2)-bin-log
- 秘密武器亮相京东JDD,FaaS全新概念震动金融圈
- 蒜头君救人 状压DP
- 网站策划注意事项