python实现最小二乘法线性拟合


Posted in Python onJuly 19, 2019

本文python代码实现的是最小二乘法线性拟合,并且包含自己造的轮子与别人造的轮子的结果比较。

问题:对直线附近的带有噪声的数据进行线性拟合,最终求出w,b的估计值。

最小二乘法基本思想是使得样本方差最小。

代码中self_func()函数为自定义拟合函数,skl_func()为调用scikit-learn中线性模块的函数。

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
 
n = 101
 
x = np.linspace(0,10,n)
noise = np.random.randn(n)
y = 2.5 * x + 0.8 + 2.0 * noise
 
def self_func(steps=100, alpha=0.01):
  w = 0.5
  b = 0
  alpha = 0.01
  for i in range(steps):
    y_hat = w*x + b
    dy = 2.0*(y_hat - y)
    dw = dy*x
    db = dy
    w = w - alpha*np.sum(dw)/n
    b = b - alpha*np.sum(db)/n
    e = np.sum((y_hat-y)**2)/n
    #print (i,'W=',w,'\tb=',b,'\te=',e)
  print ('self_func:\tW =',w,'\n\tb =',b)
  plt.scatter(x,y)
  plt.plot(np.arange(0,10,1), w*np.arange(0,10,1) + b, color = 'r', marker = 'o', label = 'self_func(steps='+str(steps)+', alpha='+str(alpha)+')')
 
def skl_func():
  lr = LinearRegression()
  lr.fit(x.reshape(-1,1),y)
  y_hat = lr.predict(np.arange(0,10,0.75).reshape(-1,1))
  print('skl_fun:\tW = %f\n\tb = %f'%(lr.coef_,lr.intercept_))
  plt.plot(np.arange(0,10,0.75), y_hat, color = 'g', marker = 'x', label = 'skl_func')
  
self_func(10000)
skl_func()
plt.legend(loc='upper left')
plt.show()

结果:

self_func:  W = 2.5648753825503197     b = 0.24527830841237772
skl_fun:     W = 2.564875                             b = 0.245278

python实现最小二乘法线性拟合

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python进程通信之匿名管道实例讲解
Apr 11 Python
python 使用get_argument获取url query参数
Apr 28 Python
python实现在pandas.DataFrame添加一行
Apr 04 Python
python实现猜数字小游戏
Mar 24 Python
Sanic框架安装与简单入门示例
Jul 16 Python
详解django中url路由配置及渲染方式
Feb 25 Python
python 自定义装饰器实例详解
Jul 20 Python
python3 selenium自动化 frame表单嵌套的切换方法
Aug 23 Python
Django集成celery发送异步邮件实例
Dec 17 Python
tensorflow基于CNN实战mnist手写识别(小白必看)
Jul 20 Python
tensorflow学习笔记之tfrecord文件的生成与读取
Mar 31 Python
python ansible自动化运维工具执行流程
Jun 24 Python
这可能是最好玩的python GUI入门实例(推荐)
Jul 19 #Python
python如何实现数据的线性拟合
Jul 19 #Python
django获取from表单multiple-select的value和id的方法
Jul 19 #Python
django 信号调度机制详解
Jul 19 #Python
python傅里叶变换FFT绘制频谱图
Jul 19 #Python
Django forms表单 select下拉框的传值实例
Jul 19 #Python
Django组件content-type使用方法详解
Jul 19 #Python
You might like
用PHP程序实现支持页面后退的两种方法
2008/06/30 PHP
php使用正则表达式获取图片url的方法
2015/01/16 PHP
跨浏览器PHP下载文件名中的中文乱码问题解决方法
2015/03/05 PHP
PHP中通过trigger_error触发PHP错误示例
2015/06/23 PHP
实现JavaScript中继承的三种方式
2009/10/16 Javascript
jQuery AJAX实现调用页面后台方法和web服务定义的方法分享
2012/03/01 Javascript
jquery制作图片时钟特效
2020/03/30 Javascript
逻辑表达式中与或非的用法详解
2016/06/06 Javascript
jQuery自定义元素右键点击事件(实现案例)
2017/04/28 jQuery
微信小程序之绑定点击事件实例详解
2017/07/07 Javascript
js中变量的连续赋值(实例讲解)
2017/07/08 Javascript
Angular-UI Bootstrap组件实现警报功能
2018/07/16 Javascript
JS实现点击下拉列表文本框中出现对应的网址,点击跳转按钮实现跳转
2019/11/25 Javascript
你不知道的 TypeScript 高级类型(小结)
2020/08/28 Javascript
[08:02]DOTA2牵红线 zhou神抱得美人归
2014/03/22 DOTA
[01:16:50]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第一场 3月7日
2021/03/11 DOTA
Python实现的Google IP 可用性检测脚本
2015/04/23 Python
python获得linux下所有挂载点(mount points)的方法
2015/04/29 Python
基于python元祖与字典与集合的粗浅认识
2017/08/23 Python
理解Python中的绝对路径和相对路径
2017/08/30 Python
Python升级导致yum、pip报错的解决方法
2017/09/06 Python
Python进阶之递归函数的用法及其示例
2018/01/31 Python
Python3实现的字典遍历操作详解
2018/04/18 Python
用Python编写一个简单的CS架构后门的方法
2018/11/20 Python
tensorflow指定GPU与动态分配GPU memory设置
2020/02/03 Python
基于Pyinstaller打包Python程序并压缩文件大小
2020/05/28 Python
OSPREY LONDON官网:英国本土皮具品牌
2019/05/31 全球购物
英国在线定制百叶窗网站:Swift Direct Blinds
2020/02/25 全球购物
P/Invoke是什么
2015/07/31 面试题
中华美德颂演讲稿
2014/05/20 职场文书
大型公益活动策划方案
2014/08/20 职场文书
小学优秀教师材料
2014/12/15 职场文书
pytorch加载预训练模型与自己模型不匹配的解决方案
2021/05/13 Python
python 利用PyAutoGUI快速构建自动化操作脚本
2021/05/31 Python
使用springMVC所需要的pom配置
2021/09/15 Java/Android
Python OpenCV超详细讲解基本功能
2022/04/02 Python