高考考试网
当前位置: 首页 高考资讯

最小二乘算法与二次拟合区别(最小二乘法ordinaryleast)

时间:2023-08-23 作者: 小编 阅读量: 1 栏目名: 高考资讯

最小二乘法理论最小二乘法是一种数学优化技术。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。是解决曲线拟合最常用的方法,其思路如下:其中,是预选定的一组线性相关的函数,是待定系数,拟合准则是使与的距离的平方和最小,称为最小二乘法准则。三维空间中,定义4x4的网格,首先定义z值,而网格点上的z值不一样,我们所要做的就是根据这个z值去拟#合这个面上所有点的值。

  • 最小二乘法理论

最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。是解决曲线拟合最常用的方法,其思路如下:

其中,是预选定的一组线性相关的函数,是待定系数,拟合准则是使与的距离的平方和最小,称为最小二乘法准则

最小二乘准则进行最小二乘平差计算的一个基本原则

  • 代码示例

import pandas as pdimport numpy as npfrom sklearn.linear_model import LinearRegressionimport matplotlib.pyplot as pltfrom mpl_toolkits.mplot3d import Axes3D#----------------------------------------------------------------------------------------------------------------------# Step1:创建需要被拟合的目标。三维空间中,定义4x4的网格,首先定义z值,而网格点上的z值不一样,我们所要做的就是根据这个z值去拟#合这个面上所有点的值。#----------------------------------------------------------------------------------------------------------------------np.random.seed(0)dim = 4Z = (np.ones((dim, dim)) * np.arange(1, dim 1, 1))**3np.random.rand(dim, dim) * 200x = np.arange(1, dim 1).reshape(-1, 1)y = np.arange(1, dim 1).reshape(1, -1)X, Y = np.meshgrid(x, y)#----------------------------------------------------------------------------------------------------------------------# Step2:自定义一组线性相关的函数, 3阶。#----------------------------------------------------------------------------------------------------------------------features = {}features['x^0*y^0'] = np.matmul(x**0, y**0).flatten()features['x*y'] = np.matmul(x, y).flatten()features['x*y^2'] = np.matmul(x, y**2).flatten()features['x^2*y^0'] = np.matmul(x**2, y**0).flatten()features['x^2*y'] = np.matmul(x**2, y).flatten()features['x^3*y^2'] = np.matmul(x**3, y**2).flatten()features['x^3*y'] = np.matmul(x**3, y).flatten()features['x^0*y^3'] = np.matmul(x**0, y**3).flatten()dataset = pd.DataFrame(features)#----------------------------------------------------------------------------------------------------------------------# Step3:将选定函数与目标值带入SkLearn包中的线性回归拟合模块,它可以使平方和最小,结果返回截距和斜率。#----------------------------------------------------------------------------------------------------------------------reg = LinearRegression().fit(dataset.values, Z.flatten())# reg.intercept_为截距, reg.coef_为斜率z_pred = reg.intercept_np.matmul(dataset.values, reg.coef_.reshape(-1, 1)).reshape(dim, dim)#----------------------------------------------------------------------------------------------------------------------# Step4:可视化。#----------------------------------------------------------------------------------------------------------------------fig = plt.figure(figsize=(5, 5))ax = Axes3D(fig)ax.plot_surface(X, Y, z_pred, label='prediction', cmap=plt.get_cmap('rainbow'))ax.scatter(X, Y, Z, c='r', label='datapoints')plt.show()

结果如下:

图1

上例定义的多项式阶数为3,对于大多数问题已经足够了,如果想定义更高阶数,则可参考如下代码:

import itertoolsimport numpy as npimport matplotlib.pyplot as pltfrom mpl_toolkits.mplot3d import Axes3D#-----------------------------------------------------------------------------------------------------------------------# Step1: 创建线性相关的函数,阶数自己定义,结果为拟合系数;#-----------------------------------------------------------------------------------------------------------------------def polyfit2d(x, y, z, order):ncols = (order1)**2G = np.zeros((x.size, ncols))ij = itertools.product(range(order 1), range(order 1))for k, (i, j) in enumerate(ij):G[:, k] = x**i * y**jm, _, _, _ = np.linalg.lstsq(G, z, rcond=-1) # lstsq的输出包括四部分:回归系数、残差平方和、自变量X的秩、X的奇异值return m#-----------------------------------------------------------------------------------------------------------------------# Step2: 创建拟合函数,将欲拟合值和拟合系数待入,返回预测值;#-----------------------------------------------------------------------------------------------------------------------def polyval2d(x, y, m):order = int(np.sqrt(len(m))) - 1 # 根据多项式的列数反算阶数ij = itertools.product(range(order 1), range(order 1))z = np.zeros_like(x)for a, (i, j) in zip(m, ij):z= a * x**i * y**jreturn z#-----------------------------------------------------------------------------------------------------------------------# Step3: 示例;#-----------------------------------------------------------------------------------------------------------------------x = np.array([4, 5, 5, 4])y = np.array([2, 3, 4, 5])z = np.array([2, 3, 4, 7])N_ORDER = 4m = polyfit2d(x, y, z, N_ORDER)N_MESH = 10xx, yy = np.meshgrid( np.linspace(x.min(), x.max(), N_MESH),np.linspace(y.min(), y.max(), N_MESH))zz = polyval2d(xx, yy, m)#-----------------------------------------------------------------------------------------------------------------------# Step4: 可视化;#-----------------------------------------------------------------------------------------------------------------------fig = plt.figure(figsize=(5, 5))ax = Axes3D(fig)ax.plot_surface(xx, yy, zz, label='prediction', cmap=plt.get_cmap('rainbow'))ax.scatter(x, y, z, c='r', label='datapoints')plt.show()

结果如下:

最小二乘法很基本也很常用,其本质是插值,但是我发现在当数值非常大时它的效果却不是很好,这时候就需要用到一些其他的方法,比如克里金法等。

声明:仅供参考

    推荐阅读
  • 论如何把打野射手玩成辅助(带妹上分为何用打野)

    但是这个玩家的常用位置是射手,所以就想通过射手来带妹子!本以为是手到擒来的事情,结果随着对面掏出了一个盾山之后,一切都变了味!因为盾山死死的克制了这边三个核心输出。五楼妹子如果掏出一个带控制的英雄打破盾山的盾都还好打一些,结果妹子只会玩瑶,所以这局毫无例外的就GG了!面对一个盾山,掏出了一个瑶,根本无法打破盾山的一技能,二技能也无法造成伤害。那么这局瑶的作用就是给队友增加护盾。

  • 员额法官是什么意思(什么是员额法官)

    员额法官是什么意思所谓“法官员额制”是指法院、检察院在编制内根据办案数量、辖区人口、经济发展水平等因素确定的法院的法官、检察官的人员限额。由于该项制度涉及面较广,在社会各界引发不少争议,其中一个相对突出的争议点就是“员额制”下法官人员减少,可能导致“案多人少”的状况。如果通过员额制改革,把有效的、积极的办案力量吸引到一线去,办案效率相应就会提高,案多人少的相对问题也就迎刃而解。

  • 能治近视的眼睛瑜伽(国外最火瑜伽护眼操)

    简易瑜伽护眼操都说眼睛是心灵的窗口,所以眼睛对任何人来说都是非常非常重要的。所以今天小编分享几个瑜伽里的动作,可以帮助我们消除眼部疲劳,保护视力,话不多说,让我们来一起做这套护眼操吧!第一阶段动作要点:12再来一次:3第二阶段动作要点:456再来一次:7第三阶段动作要点:89

  • 轻诺必寡信是什么意思(轻诺必寡信的意思)

    跟着小编一起来看一看吧!轻诺必寡信是什么意思释义:轻易许下的诺言必然缺乏信用。原句出自老子的《道德经》第六十三章,原文如下:为无为,事无事,味无味。大小多少,报怨以德。图难于其易,为大于其细;天下难事,必作于易;天下大事,必作于细。是以圣人终不为大,故能成其大。夫轻诺必寡信,多易必多难。是以圣人犹难之,故终无难矣。

  • 魂天帝是谁(魂天帝人物介绍)

    远古八族魂族族长,原为九星斗圣后期实力。后以中州为鼎,生灵为料,天地为火,肉身为丹,将帝品雏丹炼化为成品帝丹,晋升斗帝——自号魂帝。后被炎帝用牺牲肉身的代价所封印。魂天帝一袭白袍,看上去温文尔雅,为人心狠手辣,小心谨慎,做事不择手段,炎帝的最大仇人。

  • 哪个国家经济最强(亚洲最富十国与最穷十国都是谁)

    从亚洲地区来看,亚洲总共有48个主权国家,发达国家仅有4个,分别是新加坡、日本、韩国、以色列。该国是一个君主立宪制的酋长国。国民收入水平:2019年卡塔尔人均国民总收入为63410美元。以色列是中东地区唯一一个自由民主制国家。1999年12月20日中国政府恢复对澳门行使主权。澳门历史城区于2005年7月15日正式成为联合国世界文化遗产。19世纪初,逐步沦为英国的保护国。1971年3月1日,英国宣布同各酋长国签订的条约于年底终止。

  • 奶酪运输中怎么保鲜(如何保存奶酪)

    奶酪运输中怎么保鲜常见的奶酪棒要放在冰箱冷藏室进行保存,而马孙里拉芝士奶酪棒,要放在冷冻室进行保存。奶酪是牛奶经浓缩发酵而成的奶制品,在发酵制作过程中基本排除了牛奶中大量的水分,最后得以保留的是牛奶中的全部营养物质,因此奶酪的营养价值是非常高的。被誉为乳品中的黄金,可补充人体各种所需要的营养物质。奶酪是中国西北的蒙古族、哈萨克族等游牧民族的传统食品。世界出口奶酪最多的国家是荷兰。

  • 几款比较适合买的二手车(我会选择这几款)

    二手福克斯无疑是能满足这两点的。由于马6的销售周期长达10年,而且车况不一,所以其售价跨度也不小,不过它毕竟是一款中型车,虽然后排空间相比同级没优势,但相比福克斯还是要宽裕一些,也大气一些,更适合那些成了家的朋友。但抛开设计,MINI其实不适合女生开,转向手感沉重、底盘反馈直接,开着它无论如何算不上轻松舒适,但也正是因为如此,MINI可以说是目前市场上富有驾驶乐趣的一款车,俘获了一批男性车主。

  • 龙眼和桂圆是一个东西么(龙眼和桂圆一样吗)

    龙眼和桂圆一样吗△鲜龙眼甘甜可口龙眼是补什么的?龙眼是桂圆的别称,味道甘平、性温,如心、脾、胃经,入药用于补心养血、健脾益气,主要治疗思虑伤脾、产后失血虚弱造成的面色萎黄、神疲体倦、失眠心悸等症中医方剂里治疗心脾气血。

  • ps抠图教程详细图解零基础(662PS抠图)

    1魔棒适用于图像和背景色色差明显,背景色单一,图像边界清晰。路径闭合后,Ctrl空格键,直接生成选区。做好之后,选中蓝色通道的状态下,点击这个圆圆的蚂蚁线按钮,让通道转换成选区。