网站建设实训个人总结,app开发定制公司如,用邮箱做网站,网站建设实训报告心得体会拟合算法 文章目录 拟合算法概念 确定拟合曲线最小二乘法的几何解释求解最小二乘法matlab求解最小二乘法如何评价拟合的好坏计算拟合优度的代码 概念
在前面的篇幅中提到可以使用插值算法#xff0c;通过给定的样本点推算出一定的曲线从而推算出一些想要的值。但存在一些问题…拟合算法 文章目录 拟合算法概念 确定拟合曲线最小二乘法的几何解释求解最小二乘法matlab求解最小二乘法如何评价拟合的好坏计算拟合优度的代码 概念
在前面的篇幅中提到可以使用插值算法通过给定的样本点推算出一定的曲线从而推算出一些想要的值。但存在一些问题。一是若样本点过多那么多项式的次数过高会造成龙格现象二是为了避免龙格现象而通过分段的思想求得拟合曲线但这样会导致曲线函数非常复杂。
针对以上问题在拟合问题中不需要曲线一定经过给定的点。拟合问题的目标是寻求一个函数曲线而该函数尽可能设置得较为简单使得该曲线在某种准则下与所有的数据点最为接近即只要保证误差足够小即可最小化损失函数这就是拟合是思想。
确定拟合曲线
给定一组数据[x,y]找出y和x之间的拟合曲线 在matlab上通过画图得出这组数据对应的图像
plot(x,y,o);拟合一个曲线去接近样本点这里我用一个简单的拟合曲线ykxb。现在的问题是k和b取何值时样本点和拟合曲线最接近。
最小二乘法的几何解释 第一种定义有绝对值后续不容易求导因此计算较复杂。所以我们往往使用第二种定义这正是最小二乘法的思想我们也不使用三次方因为三次方计算样本点到拟合曲线的距离会出现负数那么该距离就会正负抵消我们也不使用四次方使用4次方时若出现某个异常值离曲线较远那么该拟合曲线受到的影响较大 求解最小二乘法 最终落脚到的两个公式k/sup和bsup推导公式
该公式通过对k和b一介求导然后分离系数所得
matlab求解最小二乘法 根据公式不难得出代码
plot(x,y,o);
xlabel(x);
ylabel(y);
nsize(x,1);%% 数据的个数
k(n*sum(x.*y)-sum(x)*sum(y))/(n*sum(x.*x)-sum(x)*sum(x));
b(sum(x.*x)*sum(y)-sum(x)*sum(x.*y))/(n*sum(x.*x)-sum(x)*sum(x));
hold on;%% 写上这句后续可以继续在之前的图形上画图形
grid on;%% 图形显示网格线
f(x) k*xb; %% fkxb是匿名函数该函数图形不需要另外传参数也能形成图形
fplot(f,[2.5,7]);
legend(样本数据,拟合函数,location,southeast);f函数是匿名函数该函数图形不需要另外传参数也能形成图形。在matlab中画出图形需要传参。比如正常情况下f函数需要传参x否则不能画出图形而匿名函数系统会根据需求自己给出一定范围的参数以得画出图形
匿名函数的基本用法
handle (arglist) anonymous_function其中handle为调用匿名函数时使用的名字。 arglist为匿名函数的输入参数可以是一个也可以是多个用逗号分隔。 anonymous_function为匿名函数的表达式。 注意输入参数和表达式之间要用空格
fplot可用于画出匿名一元函数的图形
基本用法
fplot(f,xinterval) 将匿名函数f在指定区间xinterval绘图。xinterval [xmin xmax] 表示定义域的范围 如何评价拟合的好坏 根据SST、SSE、SSR可以证明 SSTSSESSR拟合优度01-SSE/SST1;而SSE误差平方和越小拟合优度R2越接近1。误差越小说明拟合的越好注意拟合优度R2只能用于拟合函数是线性函数若拟合函数是其他函数直接看误差平方和即可SSE越小说明拟合度越好线性函数是指在函数中参数仅以一次方出现且不能乘以或除以其他任何的参数并不能出现参数的复合函数形式。该参数不是指自变量x。比如ykxb该参数指的是区别于自变量x和因变量y以外的参数k和b。 计算拟合优度的代码
plot(x,y,o);
xlabel(x);
ylabel(y);
nsize(x,1);%% 数据的个数
k(n*sum(x.*y)-sum(x)*sum(y))/(n*sum(x.*x)-sum(x)*sum(x));
b(sum(x.*x)*sum(y)-sum(x)*sum(x.*y))/(n*sum(x.*x)-sum(x)*sum(x));
hold on;%% 写上这句后续可以继续在之前的图形上画图形
grid on;%% 图形显示网格线
f(x) k*xb; %% fkxb是匿名函数该函数图形不需要另外传参数也能形成图形
fplot(f,[2.5,7]);
legend(样本数据,拟合函数,location,southeast);
y_hatk*xb;
SSRsum((y_hat-mean(y)).^2); % 回归平方和
SSEsum((y-y_hat).^2); % 误差平方和
SSTsum((y-mean(y)).^2); % 总体平方和
disp(SST-SSE-SSR);
R_2SSR/SST; % 拟合优度
disp(R_2);SST-SSE-SSR的结果不为0的原因是在matlab中浮点数做运算一定程度上结果不精准但结果是5.6843^-14结果是非常小的即非常接近0 [外链图片转存中…(img-WkmLP3WM-1692188156893)] SST-SSE-SSR的结果不为0的原因是在matlab中浮点数做运算一定程度上结果不精准但结果是5.6843^-14结果是非常小的即非常接近0 拟合度为0.9635非常接近1了说明该拟合函数的拟合度较好