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 29 Python
Python读写Excel文件的实例
Nov 01 Python
python实现绘制树枝简单示例
Jul 24 Python
Django的HttpRequest和HttpResponse对象详解
Jan 26 Python
python实现逐个读取txt字符并修改
Dec 24 Python
Python使用reportlab模块生成PDF格式的文档
Mar 11 Python
浅谈django url请求与数据库连接池的共享问题
Aug 29 Python
30秒学会30个超实用Python代码片段【收藏版】
Oct 15 Python
python3读取csv文件任意行列代码实例
Jan 13 Python
手把手教你用Django执行原生SQL的方法
Feb 18 Python
利用Selenium添加cookie实现自动登录的示例代码(fofa)
May 08 Python
python接口测试返回数据为字典取值方式
Feb 12 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邮箱地址正则表达式验证
2015/11/13 PHP
统计PHP目录中的文件数方法
2019/03/05 PHP
jQuery UI的Dialog无法提交问题的解决方法
2011/01/11 Javascript
关于 文本框默认值 的操作js代码
2012/01/12 Javascript
js网页中的(运行代码)功能实现思路
2013/02/04 Javascript
javascript和jquery修改a标签的href属性
2013/12/16 Javascript
Javascript实现div层渐隐效果的方法
2015/05/30 Javascript
Javascript实现代码折叠功能
2016/08/25 Javascript
浅谈Web页面向后台提交数据的方式和选择
2016/09/23 Javascript
关于JavaScript中事件绑定的方法总结
2016/10/26 Javascript
JSON与XML的区别对比及案例应用
2016/11/11 Javascript
ajax的分页查询示例(不刷新页面)
2017/01/11 Javascript
利用Blob进行文件上传的完整步骤
2018/08/02 Javascript
vue-video-player 通过自定义按钮组件实现全屏切换效果【推荐】
2018/08/29 Javascript
JS/HTML5游戏常用算法之路径搜索算法 随机迷宫算法详解【普里姆算法】
2018/12/13 Javascript
利用d3.js实现蜂巢图表带动画效果
2019/09/03 Javascript
vue 解决provide和inject响应的问题
2020/11/12 Javascript
[01:04:09]DOTA2-DPC中国联赛 正赛 iG vs VG BO3 第二场 2月2日
2021/03/11 DOTA
Python while、for、生成器、列表推导等语句的执行效率测试
2015/06/03 Python
Python实现利用最大公约数求三个正整数的最小公倍数示例
2017/09/30 Python
Python使用Selenium+BeautifulSoup爬取淘宝搜索页
2018/02/24 Python
Linux下python3.7.0安装教程
2018/07/30 Python
python钉钉机器人运维脚本监控实例
2019/02/20 Python
python实现弹窗祝福效果
2019/04/07 Python
python并发编程多进程之守护进程原理解析
2019/08/20 Python
Python爬取12306车次信息代码详解
2020/08/12 Python
python使用列表的最佳方案
2020/08/12 Python
领先的英国注册在线药房 :Simply Meds Online
2019/03/28 全球购物
澳大利亚购买太阳镜和眼镜网站:Glamoureyes
2020/09/22 全球购物
乐高瑞士官方商店:LEGO CH
2020/08/16 全球购物
消防安全管理制度
2014/02/01 职场文书
初中高效课堂实施方案
2014/02/26 职场文书
2014年基层党组织公开承诺书
2014/03/29 职场文书
安全协议书范本
2014/04/21 职场文书
高中军训的心得体会
2014/09/01 职场文书
2014物价局群众路线对照检查材料思想汇报
2014/09/21 职场文书