上一篇文章讲了最小二乘算法的原理。这篇文章通过一个简单的例子来看如何通过Python实现最小乘法的线性回归模型的参数估计。

王松桂老师《线性统计模型——线性回归与方差分析》一书中例3.1.3。

说的是一个实验容器靠蒸汽供应热量,使其保持恒温,通过一段时间观测,得到下图表中的这样一组数据:

蒸汽-环境温度数据其中,自变量X表示容器周围空气单位时间的平均温度(℃),Y表示单位时间内消耗的蒸汽量(L),共观测了25个单位时间(表中序号一列)。

那么,我们要怎样对这组数据进行线性回归分析呢?一般分三步:(1)画散点图,找模型;(2)进行回归模型的参数估计;(3)检验前面分析得到的经验模型是否合适。

画散点图

创建一个DataTemp的文件夹,在其中分别创建"data"、"demo"文件夹用于存放数据文件、Python程序文件。

把前面图中的数据导入Excel中,命名为:“蒸汽供应.xlsx”,用来作为数据源。

数据导入Excel后创建Python文件:”leastsquare.py“。在文件头加入utf-8编码的说明以支持中文字符,然后添加必要的注释。

# -*- coding: utf-8 -*-"""Created on Fri Mar 20 14:07:41 2020@author: gao"""import必要的第三方库。

"""第三方库"""importpandasaspdimportmatplotlib.pyplotaspltfromscipy.optimizeimportleastsqimportnumpyasnp使用下面的代码将Excel数据读入Python Pandas DataFrame中。

"""把excel中的数据读入datafram"""filePath=u'../data/蒸汽供应.xlsx'#含中文字符,前面加u表示用Unicode 格式进行编码data=pd.read_excel(filePath,index_col=u'序号')提取其中的Y、X列并绘制散点图

Xi=data[u'X']Yi=data[u'Y']"""画散点图"""plt.figure()plt.scatter(Xi,Yi,color='red',label='sample data',linewidth=2)plt.legend(loc='lower right')plt.show()散点图结果如下:

散点图从图中看出大致服从一个线性分布,所以我们采用一元线性回归模型来进行分析。

回归模型的参数估计

一元线性模型的一般公式为

一元线性回归模型我们使用最小二乘法估算出α、β即可求出经验回归方程。

经验模型Python中对一元线性模型的参数进行参数估计是很简单的,如下代码所示:

deffun(p,x):#回归模型函数k,b=preturnk*x+bdeferror(p,x,y):#误差returnfun(p,x)-yp0=np.array([1,3])para=leastsq(error,p0,args=(Xi,Yi))k,b=para[0]上面代码的关键之处有三点:

(1)定义模型函数、误差函数。其中误差函数error,实际上就是我们模型的估计值与实际的观察值之差,我们就是通过这个差值的最小二乘来对模型中的参数进行估计的。也就是说,前面的经验模型的参数取不同的值,那对于xi可以求出不同的yi,这个yi是我们估计值和实际的观测值进行求差就是估计误差,参数取值不同估计误差不同,我们要找到一组参数使得对于所有的观测值的误差的平方和最小。

(2)调用scipy的leastsq函数时,需要有误差函数、初始参数作为输入,还需要把我们读到的观测数据作为参数传入leastsq函数,这是此函数的三个关键的输入参数。

(3)leastsq的返回参数是多个,所以放到一个元组(tuple)中,返回tuple类型para的第一个元素para[0]是一个nupy.ndarray类型,存放的即是满足最小二乘规则的估计参数。

经验模型的效果

可以使用下面的代码打印经过最小二乘运算后的经验模型。

"""打印结果"""print('y='+str(round(k,2))+'x+'+str(round(b,2)))最后一步工作就是把我们的经验模型的线画到前面的散点图上,看一下模型的效果。

"""绘制结果曲线"""x=np.linspace(20,80,2)y=k*x+b"""画散点图"""plt.figure()plt.scatter(Xi,Yi,color='red',label='sample data',linewidth=2)plt.plot(x,y,color='blue',label='result line')plt.legend(loc='lower right')plt.show()绘出的结果图像如下:

模型结果曲线当然,我们还可以通过判定系数来看一下我们的回归方程与数据拟合的效果好坏,这个在后续的文章中再说。

python最小二乘法_Python实现最小二乘法相关推荐

  1. python画代码-Python教程_Python画Mandelbrot集 代码

    Python教程_Python画Mandelbrot集 代码 作者:Comet 来源: 课课家 www.kokojia.com点击数:278发布时间:2015-06-19 11:17:19 曼德勃罗集 ...

  2. 一步完成最小二乘法、递推最小二乘法、增广最小二乘法、广义最小二乘法、辅助变量法、二步法辨识(传递函数)

    用一步完成最小二乘法.递推最小二乘法.增广最小二乘法.广义最小二乘法.辅助变量法.二步法辨识如下模型的参数: 噪声的成形滤波器 采样时间0.01 要求: 1.用matlab 写出程序代码: 2.画出实 ...

  3. c语言实现爬虫功能,用C/C 扩展Python语言_python 调用c语言 python实现简单爬虫功能_python实现简单爬虫...

    用C/C 扩展Python语言 Python是一门功能强大的脚本语言,它的强大不仅表现在功能上,还表现在其扩展性上.她提供大量的API以方便程序员利用C/C++对Python进行扩展.因为执行速度慢几 ...

  4. 最小二乘法,加权最小二乘法,迭代重加权最小二乘法 (含代码)【最小二乘线性求解】

    文章目录 一:最小二乘法(OLS) 1:概述 2:代数式 3:矩阵式(推荐) 3.1:实现代码 二:加权最小二乘法(WLS) 1:增加对角矩阵 W 1.1:实现代码 三:迭代重加权最小二乘法(IRLS ...

  5. python编程语言_python编程语言的简要历史

    python编程语言 The Python programming language is a general-purpose programming language that has carved ...

  6. 2019最新Python学习教程(Python视频教程_Python学习教程_Python学习路线):你心目中编程界的MVP是谁?

    2019最新Python学习教程(Python视频教程_Python学习教程_Python学习路线):你心目中编程界的MVP是谁?编程界的王者是渐落寞的Java还是大火的Python? 是不是你们也喜 ...

  7. python最小二乘法拟合_Python 普通最小二乘法(OLS)进行多项式拟合

    多元函数拟合.如 电视机和收音机价格多销售额的影响,此时自变量有两个. python 解法: importnumpy as npimportpandas as pd#import statsmodel ...

  8. python多项式拟合_Python 普通最小二乘法(OLS)进行多项式拟合,最小二乘法拟合二次多项式,多元函数拟合。如 电...

    Python 普通最小二乘法(OLS)进行多项式拟合,最小二乘法拟合二次多项式,多元函数拟合.如 电 多元函数拟合.如 电视机和收音机价格多销售额的影响,此时自变量有两个. python 解法:imp ...

  9. python最小二乘法拟合直线_Python 实现最小二乘法拟合直线

    线性回归 线性回归是回归分析中最常见的一种建模方式.当因变量是连续的,自变量是连续的或者离散的,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析. 用方程 y = mx + c,其中 ...

最新文章

  1. 初级开发人员的缺点_作为一名初级开发人员,我如何努力克服自己的挣扎
  2. python人工智能-Python和人工智能的关系,看完你就明白了!
  3. 科大星云诗社动态20201221
  4. linux fedora35安装deepin-wine:deepin-wine-on-fedora项目
  5. [转]nchar,char,varchar与nvarchar区别
  6. cf 1059e 思维 贪心 树
  7. 多线程死锁及解决办法
  8. Win7上Git安装及配置过程 [转]
  9. 4.5亿!依图的AI芯片计划初步浮出水面
  10. C# FAQ: const和static readonly有什么区别?
  11. u盘装linux fail load,安装ubuntu18.04报:failed to load ldlinux.c32的问题及解决步骤
  12. 最近的收获以及清明节的安排
  13. ARM9开发板实验笔记(1)
  14. 华为云教程(云数据库RDS)
  15. 合工大机器人足球仿真robocup2D球队代码实验七实验验收
  16. 淘口令卡首屏直通车卡首屏关键词刷单技术分享
  17. 少吃柿子、山楂、黑枣,警惕鞣酸
  18. 登录和第三方授权(Cookie和Authorization)
  19. 怎么把照片精确压缩到固定KB体积大小
  20. 文献阅读 | Distribution of Parental Genome Blocksin Recombinant Inbred Lines

热门文章

  1. 0糖0卡0脂肪更健康还是骗智商
  2. Linux入门 21_企业dns服务器搭建之高速缓存dns搭建与dns正反向解析
  3. web前端工程师进阶学习线路图
  4. 如何评价BI工具FineBI?
  5. 华三交换机的用户权限设置
  6. Mybatis:Example类的使用--基本增删改查,模糊查询,排序,or,分页查询
  7. 利用Python开发智能阅卷系统(附源代码)
  8. 2023 HW 必修高危漏洞集合
  9. 借助微软在线工具,实现预览文件功能
  10. 虚拟化、大数据、云计算、物联网、移动互联网以及传统互联网之间的关系