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中使用urllib2伪造HTTP报头的2个方法
Jul 07 Python
低版本中Python除法运算小技巧
Apr 05 Python
python 时间信息“2018-02-04 18:23:35“ 解析成字典形式的结果代码详解
Apr 19 Python
python中ASCII码和字符的转换方法
Jul 09 Python
将Python字符串生成PDF的实例代码详解
May 17 Python
用Python批量把文件复制到另一个文件夹的实现方法
Aug 16 Python
pytorch模型预测结果与ndarray互转方式
Jan 15 Python
Python用input输入列表的实例代码
Feb 07 Python
Python基于Hypothesis测试库生成测试数据
Apr 29 Python
浅谈keras中的目标函数和优化函数MSE用法
Jun 10 Python
django项目中使用云片网发送短信验证码的实现
Jan 19 Python
python中tkinter复选框使用操作
Nov 11 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
Terran建筑一览
2020/03/14 星际争霸
一个程序下载的管理程序(三)
2006/10/09 PHP
php检测网页是否被百度收录的函数代码
2013/10/09 PHP
php导出中文内容excel文件类实例
2015/07/06 PHP
PHP中phar包的使用教程
2017/06/14 PHP
javacript使用break内层跳出外层循环分析
2015/01/12 Javascript
jQuery实现仿淘宝带有指示条的图片转动切换效果完整实例
2015/03/04 Javascript
jQuery实现动态添加、删除按钮及input输入框的方法
2017/04/27 jQuery
详解win7 cmd执行vue不是内部命令的解决方法
2017/07/27 Javascript
使用JS组件实现带ToolTip验证框的实例代码
2017/08/23 Javascript
vue 粒子特效的示例代码
2017/09/19 Javascript
JS实现按钮添加背景音乐示例代码
2017/10/17 Javascript
Vue filter格式化时间戳时间成标准日期格式的方法
2018/09/16 Javascript
angularjs1.5 组件内用函数向外传值的实例
2018/09/30 Javascript
es6数组之扩展运算符操作实例分析
2020/04/25 Javascript
Python文本相似性计算之编辑距离详解
2016/11/28 Python
python安装模块如何通过setup.py安装(超简单)
2018/05/05 Python
Python实现二维曲线拟合的方法
2018/12/29 Python
利用Python实现微信找房机器人实例教程
2019/03/10 Python
使用apiDoc实现python接口文档编写
2019/11/19 Python
python 实现保存最新的三份文件,其余的都删掉
2019/12/22 Python
如何基于Python实现自动扫雷
2020/01/06 Python
TensorFlow实现自定义Op方式
2020/02/04 Python
python GUI库图形界面开发之PyQt5状态栏控件QStatusBar详细使用方法实例
2020/02/28 Python
python库skimage给灰度图像染色的方法示例
2020/04/27 Python
PyQt5的QWebEngineView使用示例
2020/10/20 Python
夏尔巴人登珠峰品牌:Sherpa Adventure Gear
2018/02/08 全球购物
PHP中如何创建和修改数组
2012/05/02 面试题
linux面试题参考答案(6)
2016/06/23 面试题
小区停车场管理制度
2014/01/27 职场文书
师范学院教师自荐书
2014/01/31 职场文书
计算机科学与技术专业求职信
2014/09/03 职场文书
卖车协议书范本4篇
2014/10/01 职场文书
小学教师自我评价
2015/03/04 职场文书
vue实现拖拽交换位置
2022/04/07 Vue.js
HTML静态页面获取url参数和UserAgent的实现
2022/08/05 HTML / CSS