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程序与系统shell交互的方式
Apr 09 Python
微信 用脚本查看是否被微信好友删除
Oct 28 Python
Python编写登陆接口的方法
Jul 10 Python
Python 实现字符串中指定位置插入一个字符
May 02 Python
对pandas中Series的map函数详解
Jul 25 Python
OpenCV搞定腾讯滑块验证码的实现代码
May 18 Python
django admin组件使用方法详解
Jul 19 Python
从0到1使用python开发一个半自动答题小程序的实现
May 12 Python
python进行OpenCV实战之画图(直线、矩形、圆形)
Aug 27 Python
Pytorch生成随机数Tensor的方法汇总
Sep 09 Python
Django项目如何获得SSL证书与配置HTTPS
Apr 30 Python
利用Python将list列表写入文件并读取的方法汇总
Mar 25 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
动漫女神老婆无限好,但日本女生可能就不是这么一回事了!
2020/03/04 日漫
使用PHP和XSL stylesheets转换XML文档
2006/10/09 PHP
PHP预定义变量9大超全局数组用法详解
2016/04/23 PHP
对比PHP对MySQL的缓冲查询和无缓冲查询
2016/07/01 PHP
浅析Laravel5中队列的配置及使用
2016/08/04 PHP
PHP+AJAX 投票器功能
2017/11/11 PHP
php抽象方法和普通方法的区别点总结
2019/10/13 PHP
GridView中获取被点击行中的DropDownList和TextBox中的值
2013/07/18 Javascript
JS+CSS设置img在DIV中只显示Img垂直居中的部分
2013/10/24 Javascript
jquery ajax跨域解决方法(json方式)
2014/02/04 Javascript
JavaScript数字和字符串转换示例
2014/03/26 Javascript
JavaScript DOM节点添加示例
2014/07/16 Javascript
Javascript实现的Map集合工具类完整实例
2015/07/31 Javascript
Jquery组件easyUi实现表单验证示例
2016/08/23 Javascript
JS正则表达式学习之贪婪和非贪婪模式实例总结
2016/12/26 Javascript
基于React+Redux的SSR实现方法
2018/07/03 Javascript
JS通过位运算实现权限加解密
2018/08/14 Javascript
vue使用swiper实现中间大两边小的轮播图效果
2019/11/24 Javascript
vue实现一个矩形标记区域(rectangle marker)的方法
2020/10/28 Javascript
javascript实现电商放大镜效果
2020/11/23 Javascript
详解Django通用视图中的函数包装
2015/07/21 Python
Python中字符串的修改及传参详解
2016/11/30 Python
python中map()函数的使用方法示例
2017/09/29 Python
Python网络编程之TCP与UDP协议套接字用法示例
2018/02/02 Python
python爬取各类文档方法归类汇总
2018/03/22 Python
python 拷贝特定后缀名文件,并保留原始目录结构的实例
2018/04/27 Python
用python的turtle模块实现给女票画个小心心
2019/11/23 Python
详解CSS3 Media Queries中媒体属性的使用
2016/02/29 HTML / CSS
Brasty波兰:香水、化妆品、手表网上商店
2019/04/15 全球购物
电大会计学自我鉴定
2014/02/06 职场文书
群众路线教育实践活动调研报告
2014/11/03 职场文书
2014办公室年度工作总结
2014/12/09 职场文书
2015年度党员个人总结
2015/02/14 职场文书
银行稽核岗位职责
2015/04/13 职场文书
2015年度工程师评职称工作总结
2015/10/14 职场文书
使用CSS实现小三角边框原理解析
2021/11/07 HTML / CSS