最小二乘法python实现_【工科生日常】最小二乘法的python实现

最小二乘法

【写在之前】又到了春困秋乏的日子,up主的身体不由自主地开始懒惰起来了。正因为如此,我们才要开出一个新的栏目激励一下是不是!虽说up地python文章写到现在也不少了,但是作为一个只学了python不到两个月的小萌新,要自己完全地原创编写代码是真的有点困难。就算我有这个心,也着实没有那个时间啊。。。学生还得上课真讨厌。之后这个栏目每期介绍一种算法,up可能解释不了算法大的原理,但我一定会解释它们的用途,也一定会提供全套的python代码!(up自己上机跑一遍)

按照惯例,先拜一拜豪哥的头像,每次当我失去力量的时候,只要看一眼豪哥的笑脸,我就能够重新找到写下去的动力!(PS:我不搞基)

好,接下来进入正题,最小二乘法的公式如下:

这个公式是什么意思呢?它是怎么推导出来的呢?说大实话,sorry I don't know.

但我知道,最小二乘法,是通过某种我所不知到的东西,使得误差的平方和最小,以此来寻找与原始数据匹配度最高的函数。这也就是我们通常长所理解的“拟合”。这里所谓的误差也就是拟合曲线上的点与原始数据点的差值。

有同学就觉得奇怪了,啊呀!阿婆主啊,你看你最小二乘法的原理都不知道,你怎么编程啊?你这文章可不可信啊?

这里up可以说,我虽然不知道原理,无法推导,但是有人会啊,而且大神们早就已经帮我们搞定一切了。作为一个实用主义者和拿来主义者,我不介意在别人允许的情况下使用别人的成果。如果有同学希望能够深入了解这些算法的原理,可以自行研究,up在这里抱歉了,智商可能无法达到那样的高度。

ok,咱么开始干活,用python来实现最小二乘法需要哪些准备条件呢?

以下python模块请同学们自行安装完毕,不会的可以参考我的python初级学习系列文集第一篇:

numpy:python向量运算支持包

matplotlib:python基础绘图包

知道了工具,接下来上代码:

先将所需要的模块导入,然后设定一个我们需要拟合的函数。

随后我们尝试着看看原始的函数是什么样的:

(这里缺了一行代码,同学们自动补齐:plt.show())

哇偶乌,一个非常漂亮的函数,接下来,用到两个函数polyfit()和polyval(),别问我是什么意思,我只知道它们用于最小二乘法。一开始,我们将自由度调低一点,设置成2,上代码:

ok,来看一下拟合的结果:

自由度太低啦,试着调成5:

有点像啦,可还是有点不对头,那就再调高!10看一看:

哇很棒欸,看看误差怎么样?

False意味着拟合曲线与原曲线不是同一个曲线,这没关系,咱们的误差小到令人发指就够了!当然这也得益于咱们的数据本身就有一定的规律,如果数据结构非常复杂,最小二乘法就gg了。

最后突然想起了一个问题,如果我的自由度越大,那不是越好吗?关于这个问题,同学们可以就留言哦,快快来打我的脸,说的最有道理的那个,可以得到一个,,,,,额,,,,一个赞吧!!!!

哈哈哈,喜欢up主的同学们欢迎关注在下的公众号:

啦啦啦!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值