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中list常用操作实例详解
Jun 03 Python
Python3的urllib.parse常用函数小结(urlencode,quote,quote_plus,unquote,unquote_plus等)
Sep 18 Python
使用python实现个性化词云的方法
Jun 16 Python
Django视图之ORM数据库查询操作API的实例
Oct 27 Python
Python三种遍历文件目录的方法实例代码
Jan 19 Python
使用python将时间转换为指定的格式方法
Nov 12 Python
在unittest中使用 logging 模块记录测试数据的方法
Nov 30 Python
python tkinter图形界面代码统计工具(更新)
Sep 18 Python
浅谈python多线程和多线程变量共享问题介绍
Apr 17 Python
Python多线程实现支付模拟请求过程解析
Apr 21 Python
python库skimage给灰度图像染色的方法示例
Apr 27 Python
Python自定义sorted排序实现方法详解
Sep 18 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中读写文件与读写数据库的效率比较分享
2013/10/19 PHP
Codeigniter注册登录代码示例
2014/06/12 PHP
PHP实现的sqlite数据库连接类
2014/12/12 PHP
PHP实现数组转JSon和JSon转数组的方法示例
2018/06/14 PHP
php使用curl模拟浏览器表单上传文件或者图片的方法
2018/11/10 PHP
Thinkphp5框架简单实现钩子(Hook)行为的方法示例
2019/09/03 PHP
PHP实现数组根据某个字段进行水平合并,横向合并案例分析
2019/10/08 PHP
PHP设计模式(一)工厂模式Factory实例详解【创建型】
2020/05/02 PHP
JS创建优美的页面滑动块效果 - Glider.js
2007/09/27 Javascript
jQuery查找节点并获取节点属性的方法
2016/09/09 Javascript
JS实现中国公民身份证号码有效性验证
2017/02/20 Javascript
jQuery动态产生select option下拉列表
2017/03/15 Javascript
微信小程序 动态绑定事件并实现事件修改样式
2017/04/13 Javascript
vue 计时器组件的实现代码
2017/09/14 Javascript
微信小程序button组件使用详解
2018/01/31 Javascript
vue基于element-ui的三级CheckBox复选框功能的实现代码
2018/10/15 Javascript
利用Python绘制MySQL数据图实现数据可视化
2015/03/30 Python
python web框架学习笔记
2016/05/03 Python
python 用所有标点符号分隔句子的示例
2019/07/15 Python
Python企业编码生成系统总体系统设计概述
2019/07/26 Python
python装饰器代替set get方法实例
2019/12/19 Python
基于HTML5+CSS3实现简单的时钟效果
2017/09/11 HTML / CSS
整个世界的设计师家具在哈恩:Designathome
2019/03/25 全球购物
标准自荐信范文
2014/01/29 职场文书
成龙洗发水广告词
2014/03/14 职场文书
党员个人整改方案及措施
2014/10/25 职场文书
2014年卫生监督工作总结
2014/12/09 职场文书
我们的节日元宵节活动总结
2015/02/06 职场文书
公开致歉信
2019/06/24 职场文书
2019销售早会主持词
2019/06/27 职场文书
七年级作文之关于奶奶
2019/10/29 职场文书
go mod 安装依赖 unkown revision问题的解决方案
2021/05/06 Golang
python爬取某网站原图作为壁纸
2021/06/02 Python
关于Python OS模块常用文件/目录函数详解
2021/07/01 Python
国庆节到了,利用JS实现一个生成国庆风头像的小工具 详解实现过程
2021/10/05 Javascript
Mybatis-plus配置分页插件返回统一结果集
2022/06/21 Java/Android