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 相关文章推荐
使用url_helper简化Python中Django框架的url配置教程
May 30 Python
Python随机生成带特殊字符的密码
Mar 02 Python
python selenium UI自动化解决验证码的4种方法
Jan 05 Python
numpy中实现二维数组按照某列、某行排序的方法
Apr 04 Python
django 使用 request 获取浏览器发送的参数示例代码
Jun 11 Python
python数据批量写入ScrolledText的优化方法
Oct 11 Python
python使用matplotlib绘制热图
Nov 07 Python
python超时重新请求解决方案
Oct 21 Python
有关Tensorflow梯度下降常用的优化方法分享
Feb 04 Python
TensorFlow加载模型时出错的解决方式
Feb 06 Python
Windows 平台做 Python 开发的最佳组合(推荐)
Jul 27 Python
python基础之//、/与%的区别详解
Jun 10 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 字符串 小常识
2009/06/05 PHP
使用php发送有附件的电子邮件-(PHPMailer使用的实例分析)
2013/04/26 PHP
无刷新动态加载数据 滚动条加载适合评论等页面
2013/10/16 PHP
php中smarty模板条件判断用法实例
2015/06/11 PHP
javascript管中窥豹 形参与实参浅析
2011/12/17 Javascript
理解JAVASCRIPT中hasOwnProperty()的作用
2013/06/05 Javascript
js 弹出新页面避免被浏览器、ad拦截的一种新方法
2014/04/30 Javascript
jQuery实现个性翻牌效果导航菜单的方法
2015/03/09 Javascript
Javascript 字符串模板的简单实现
2016/02/13 Javascript
JS搜狐面试题分析
2016/12/16 Javascript
微信小程序实现倒计时60s获取验证码
2020/04/17 Javascript
JS函数节流和函数防抖问题分析
2017/12/18 Javascript
基于vue-simplemde实现图片拖拽、粘贴功能
2018/04/12 Javascript
javaScript代码飘红报错看不懂?读完这篇文章再试试
2020/08/19 Javascript
Python time模块详解(常用函数实例讲解,非常好)
2014/04/24 Python
python实现数值积分的Simpson方法实例分析
2015/06/05 Python
python 打印直角三角形,等边三角形,菱形,正方形的代码
2017/11/21 Python
wxPython的安装图文教程(Windows)
2017/12/28 Python
Python3.5局部变量与全局变量作用域实例分析
2019/04/30 Python
Django中使用haystack+whoosh实现搜索功能
2019/10/08 Python
读取nii或nii.gz文件中的信息即输出图像操作
2020/07/01 Python
Html5 webview元素定位工具的实现
2020/08/07 HTML / CSS
美国领先的商务贺卡出版商:The Gallery Collection
2018/02/13 全球购物
美国唇部护理专家:Sara Happ
2019/06/19 全球购物
计算机开发个人求职信范文
2013/09/26 职场文书
网络维护管理员的自我评价分享
2013/11/11 职场文书
外贸英语毕业生自荐信
2013/11/14 职场文书
大学毕业寄语大全
2014/04/10 职场文书
卖车协议书
2014/04/21 职场文书
安全例会汇报材料
2014/08/23 职场文书
企业整改报告范文
2014/11/08 职场文书
2014年路政工作总结
2014/12/10 职场文书
死亡诗社观后感
2015/06/05 职场文书
致运动员赞词
2015/07/22 职场文书
2016年学校禁毒宣传活动工作总结
2016/04/05 职场文书
mysql 乱码 字符集latin1转UTF8
2022/04/19 MySQL