python实现最小二乘法线性拟合
作者:王勇21633012 时间:2022-04-01 03:46:49
本文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
来源:https://blog.csdn.net/weixin_38275649/article/details/80330288
标签:python,最小二乘法,线性拟合
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
设计角色的分工和配合
2008-10-20 12:08:00
![](https://img.aspxhome.com/file/UploadPic/200810/20/2008102012945335s.jpg)
网站设计配色方案教程
2007-10-10 19:38:00
![](https://img.aspxhome.com/file/UploadPic/up/2007101019571461.jpg)
使用HTML5中的canvas进行图形图像.游戏.动画开发时,不需要双缓冲机制
2010-04-01 12:21:00
Linux安装Python3如何和系统自带的Python2并存
2023-08-25 03:42:09
python实现桌面气泡提示功能
2023-07-13 06:37:13
![](https://img.aspxhome.com/file/2023/0/94070_0s.jpg)
php文章内容分页并生成相应的htm静态页面代码
2023-07-23 23:48:20
解析:MySQL 数据库搜索中大小写敏感性
2009-02-23 17:32:00
Python Opencv实现图像轮廓识别功能
2023-02-27 12:32:40
![](https://img.aspxhome.com/file/2023/6/70696_0s.jpg)
深入研究ASP中的Session
2007-09-13 12:37:00
python sort、sort_index方法代码实例
2022-12-16 00:43:17
编写Python脚本来实现最简单的FTP下载的教程
2022-11-12 01:25:45
Python生成随机数的方法详解(最全)
2023-05-04 12:36:08
![](https://img.aspxhome.com/file/2023/5/71355_0s.png)
Python中plt.imshow(image)无法显示图片的解决
2022-01-12 15:33:04
![](https://img.aspxhome.com/file/2023/4/86644_0s.png)
Tensorflow中TFRecord生成与读取的实现
2023-05-02 07:21:20
![](https://img.aspxhome.com/file/2023/0/86630_0s.jpg)
IE不支持border-spacing的解决办法
2009-04-28 13:11:00
三分钟学会Sql Server的复制功能[图]
2008-07-18 12:18:00
![](https://img.aspxhome.com/file/UploadPic/20087/18/2008718122618221s.gif)
如何利用Python和matplotlib更改纵横坐标刻度颜色
2022-06-02 04:00:03
![](https://img.aspxhome.com/file/2023/4/79434_0s.png)
ubuntu16.04制作vim和python3的开发环境
2022-08-11 00:11:07
Python实现密钥密码(加解密)实例详解
2022-09-10 12:03:37
![](https://img.aspxhome.com/file/2023/4/67264_0s.jpg)
python用faker库批量生成假数据
2023-04-09 13:15:46