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中删除文件的程序代码
Mar 13 Python
Python的设计模式编程入门指南
Apr 02 Python
Python 爬虫学习笔记之正则表达式
Sep 21 Python
python去除空格和换行符的实现方法(推荐)
Jan 04 Python
Selenium 模拟浏览器动态加载页面的实现方法
May 16 Python
使用numpy和PIL进行简单的图像处理方法
Jul 02 Python
两个元祖T1=('a', 'b'),T2=('c', 'd')使用匿名函数将其转变成[{'a': 'c'},{'b': 'd'}]的几种方法
Mar 05 Python
pandas删除行删除列增加行增加列的实现
Jul 06 Python
对python中基于tcp协议的通信(数据传输)实例讲解
Jul 22 Python
python七种方法判断字符串是否包含子串
Aug 18 Python
关于Kotlin中SAM转换的那些事
Sep 15 Python
python 绘制正态曲线的示例
Sep 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
使用Curl进行抓取远程内容时url中文编码问题示例探讨
2013/10/29 PHP
浅析ThinkPHP中的pathinfo模式和URL重写
2014/01/06 PHP
PHP中使用imagick实现把PDF转成图片
2015/01/26 PHP
php去掉文件前几行的方法
2015/07/29 PHP
PHP实现适用于自定义的验证码类
2016/06/15 PHP
许愿墙中用到的函数
2006/10/07 Javascript
基于jQuery的左右滚动实现代码
2010/12/03 Javascript
jQuery Ajax方法调用 Asp.Net WebService 的详细实例代码
2011/04/27 Javascript
jquery实现邮箱自动补全功能示例分享
2014/02/17 Javascript
取得元素的左和上偏移量的方法
2014/09/17 Javascript
利用js实现禁止复制文本信息
2015/06/03 Javascript
Bootstrap开发实战之响应式轮播图
2016/06/02 Javascript
基于HTML+CSS+JS实现增加删除修改tab导航特效代码
2016/08/05 Javascript
使用jQuery和ajax代替iframe的方法(详解)
2017/04/12 jQuery
vue下使用nginx刷新页面404的问题解决
2019/08/02 Javascript
Electron实现应用打包、自动升级过程解析
2020/07/07 Javascript
JavaScript常用进制转换及位运算实例解析
2020/10/14 Javascript
JS实现简易日历效果
2021/01/25 Javascript
Python科学计算环境推荐——Anaconda
2014/06/30 Python
Python使用PIL库实现验证码图片的方法
2016/03/11 Python
Python 文件处理注意事项总结
2017/04/10 Python
python3解析库lxml的安装与基本使用
2018/06/27 Python
python监测当前联网状态并连接的实例
2018/12/18 Python
python使用pygame模块实现坦克大战游戏
2020/03/25 Python
python pickle存储、读取大数据量列表、字典数据的方法
2019/07/07 Python
Python Socket TCP双端聊天功能实现过程详解
2020/06/15 Python
New Balance法国官方网站:购买鞋子和服装
2019/09/01 全球购物
医院后勤自我鉴定
2013/10/13 职场文书
力学专业毕业生自荐信
2013/11/17 职场文书
关于母亲节的感言
2014/02/04 职场文书
感恩母亲节活动方案
2014/03/04 职场文书
企业安全生产承诺书
2014/05/22 职场文书
驾驶员安全责任书范本
2014/07/24 职场文书
大学拉赞助协议书范文
2014/09/26 职场文书
领导班子整改措施
2014/10/24 职场文书
创业计划书之溜冰场
2019/10/25 职场文书