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服务器与android客户端socket通信实例
Nov 12 Python
Python列表计数及插入实例
Dec 17 Python
Python操作Word批量生成文章的方法
Jul 28 Python
Python爬虫包BeautifulSoup异常处理(二)
Jun 17 Python
Django rest framework工具包简单用法示例
Jul 20 Python
Python 利用pydub库操作音频文件的方法
Jan 09 Python
python中几种自动微分库解析
Aug 29 Python
python  ceiling divide 除法向上取整(或小数向上取整)的实例
Dec 27 Python
pytorch三层全连接层实现手写字母识别方式
Jan 14 Python
python实现密码强度校验
Mar 18 Python
python如何更新包
Jun 11 Python
Python 基于jwt实现认证机制流程解析
Jun 22 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
如何使用Strace调试工具
2013/06/03 PHP
使用phpQuery采集网页的方法
2013/11/13 PHP
Yii实现单用户博客系统文章详情页插入评论表单的方法
2015/12/28 PHP
不错的asp中显示新闻的功能
2006/10/13 Javascript
JS控制图片翻转示例代码(兼容firefox,ie,chrome)
2013/12/19 Javascript
js几秒以后倒计时跳转示例
2013/12/26 Javascript
JS 数字转换为大写金额的简单实例
2016/08/04 Javascript
关于vue.js弹窗组件的知识点总结
2016/09/11 Javascript
详解百度百科目录导航树小插件
2017/01/08 Javascript
百度地图API之百度地图退拽标记点获取经纬度的实现代码
2017/01/12 Javascript
浅谈如何使用 webpack 优化资源
2017/10/20 Javascript
webpack之引入图片的实现及问题
2018/10/08 Javascript
使用react render props实现倒计时的示例代码
2018/12/06 Javascript
通过实践编写优雅的JavaScript代码
2019/05/30 Javascript
详解Vue中的自定义指令
2020/12/07 Vue.js
初步讲解Python中的元组概念
2015/05/21 Python
Python自定义装饰器原理与用法实例分析
2018/07/16 Python
Linux CentOS Python开发环境搭建教程
2018/11/28 Python
Python实现将HTML转成PDF的方法分析
2019/05/04 Python
用vue.js组件模拟v-model指令实例方法
2019/07/05 Python
Django处理Ajax发送的Get请求代码详解
2019/07/29 Python
python爬取本站电子书信息并入库的实现代码
2020/01/20 Python
Python用access判断文件是否被占用的实例方法
2020/12/17 Python
python 求两个向量的顺时针夹角操作
2021/03/04 Python
HTML5探秘:用requestAnimationFrame优化Web动画
2018/06/03 HTML / CSS
美国第二大团购网站:LivingSocial
2016/07/24 全球购物
中国网上药店领导者:1药网
2017/02/16 全球购物
英国家庭珠宝商:T. H. Baker
2018/02/08 全球购物
C语言50道问题
2014/10/23 面试题
结构和类有什么异同
2012/07/16 面试题
酒店拾金不昧表扬信
2014/01/18 职场文书
小学数学国培感言
2014/03/10 职场文书
门面房租房协议书
2014/08/20 职场文书
乡镇组织委员个人整改措施
2014/09/16 职场文书
银行柜员优质服务心得体会
2016/01/22 职场文书
详解CSS不定宽溢出文本适配滚动
2021/05/24 HTML / CSS