栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Python

matlab拟合模型学习总结

Python 更新时间:发布时间: 百科书网 趣学号

与插值问题不同,在拟合问题中不需要曲线一定经过给定的点。拟合问题的目标是寻求一个函数(曲线),使得该曲线在某种准则下与所有的数据点最为接近,即曲线拟合的最好(最小化损失函数)。

我们首先使用最小二乘法来计算并拟合

上图为最最小二乘法基本公式,在此不进行深入解释。

利用已知数据,计算k,bhat,来对所给数据进行拟合。

下面我们在matlab中实际操作一下

plot(x,y,'o')%做出散点图,先最已知数据进行观察
xlabel('x的值')
ylabel('y的值')%给x,y轴加标签。
n=size(x,1);%测量x长度
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))%分别算出k和b的值,根据最小二乘法
hold on %在之前的散点图上继续画图形
grid on %在生成的图形上显示网格线,更容易看出大小比较和区分
f=@(x) k*x+b;
%匿名函数的基本用法
%函数名称=@(arglist函数变量)anonymous function
%anonymous function匿名函数的表达式
fplot(f,[2.5,7]);
legend('样本数据','拟合函数')
%计算拟合优度
y_hat=k*x+b;
SSR=sum((y_hat-mean(y)).^2)%回归平方和
SSE=sum((y_hat-y).^2)%误差平方和
SST=sum((y-mean(y)).^2)%误差总体平方和
SST-SSE-SSR%5.6843e-14误差很小
R_2=SSR/SST

 

拟合完毕之后,我们对其进行拟合优度测定,以确定拟合的好坏

拟合优度只有对线性函数才有实际作用,线性可以对参数的线性

 结合上部分代码,可以计算出拟合优度。

%计算拟合优度
y_hat=k*x+b;
SSR=sum((y_hat-mean(y)).^2)%回归平方和
SSE=sum((y_hat-y).^2)%误差平方和
SST=sum((y-mean(y)).^2)%误差总体平方和
SST-SSE-SSR%5.6843e-14误差很小
R_2=SSR/SST

在matlab中还有拟合工具箱的用法,在我们拟合时更为便捷。

其中一般选用多项式,和自定义拟合方法

 

点击文件还可以创造获取代码,可以放在论文附录中,进行翻译。

在命令行窗口中可以直接运行该生成函数 

 在使用自定义函数拟合时候,可能会遇到没有收敛解的情况此时

 

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/987096.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号