dl----最小二乘法

文章通过Python的numpy和scipy库展示了如何使用最小二乘法对含有噪声的数据进行拟合,比较了梯度下降法,并提供了详细的代码示例。首先定义了实际函数和拟合函数,然后利用scipy.optimize的leastsq函数求解最小二乘问题,最后绘制了拟合曲线与原始数据的对比图。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最小二乘法
定义是使理论值与观测值的误差的平方和最小的方法;
目标是为了给真实点拟合出最合适的目标曲线;
最小二乘法
实际的方程形式为:
矩阵表达
求解过程:
求解过程
梯度下降与最小二乘法的比较
在这里插入图片描述
最小二乘法python实现

# _*_ coding: utf-8 _*_
import numpy as np  # 引入numpy
import scipy as sp
import pylab as pl
from scipy.optimize import leastsq  # 引入最小二乘函数

n = 9 


def real_func(x):
    return np.sin(2 * np.pi * x)


def fit_func(p, x):
    f = np.poly1d(p)
    return f(x)


def residuals_func(p, y, x):
    ret = fit_func(p, x) - y
    return ret


x = np.linspace(0, 1, 9)  # 随机选择9个点作为x
x_points = np.linspace(0, 1, 1000)  # 画图时需要的连续点

y0 = real_func(x)  # 目标函数
y1 = [np.random.normal(0, 0.1) + y for y in y0]  # 添加正太分布噪声后的函数

p_init = np.random.randn(n)  # 随机初始化多项式参数

plsq = leastsq(residuals_func, p_init, args=(y1, x))

print('Fitting Parameters: ', plsq[0])     # 输出拟合参数

pl.plot(x_points, real_func(x_points), label='real')
pl.plot(x_points, fit_func(plsq[0], x_points), label='fitted curve')
pl.plot(x, y1, 'bo', label='with noise')
pl.legend()
pl.show()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值