最小二乘法一元高次

最小二乘法一元高次

1.基本原理

在这里插入图片描述这里的β就是我们所求的变量
在这里插入图片描述
所以这里我们可以得到在这里插入图片描述
然后我们就可根据这个公式去实现算法,但是往往这里并不能得到一个非常好的结果,因为会出现过拟合问题。
在这里插入图片描述
所以可以采用正则化(岭回归)的方式来改进,
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.代码实现

请参考这位大佬的博客,我就是学习的他的代码实现
最小二乘法多项式曲线拟合及其python实现

3.代码解读

数据来源是利用y=sinx产生初始数据,加入一个正态分布的噪声,这样就产生了y_noise,在使用这个数据来计算得到参数项。

  1. np.random.normal()函数
    np.random.normal()的意思是一个正态分布,normal这里是正态的意思
    参数类型及解读:
loc:float
    概率分布的均值
scale:float
    概率分布的标准差
size:int or tuple of ints
    输出的shape,默认为None,只输出一个值

更一般的形式是np.random.randn(size)即标准正态分布,相当于np.random.normal(loc=0, scale=1, size)。

  1. reshape修改数组形状
a = [0 1 2 3 4 5 6 7];
b = a.reshape(4,2)
results:
b=[[0 1]
   [2 3]
   [4 5]
   [6 7]]
  1. matplotlib.pyplot.plot 参数
    plt.plot(x, y, ls="-", lw=2, label=“plot figure”)
    ls:折线图的线条风格
    lw:折线图的线条宽度
    label:标记图内容的标签文本
    4.numpy.column_stack(a,b)将矩阵a,b按列合并
    numpy.row_stack(a,b)将矩阵a,b按行合并
a = [1,2,3]  # 3*1
b = [4,
     5,
     6]  # 3*1
c = numpy.column_stack(a,b)
d = numpy.row_stack(a,b)
results:
c = [[1,4]
	 [2,5]
	 [3,6]]  # 3*2
d = [1,2,3,4,5,6]  # 6*1
  1. numpy对数组进行操作(插入、删除、添加等)
    详见菜鸟教程数组操作篇
  2. 代码中与矩阵相关的计算也可参考菜鸟教程numpy部分的讲解
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值