matlab求最小二乘法的代码,MATLAB最小二乘解
本文主要介绍了python机器学习中MATLAB最小二乘法的两种解释方法。有需要的朋友可以借鉴一下,希望能有所帮助。
00-1010最小二乘代价函数和最小二乘向量到子空间的距离以及最小二乘最小二乘和多项式拟合多项式拟合结果绘制:最小二乘和多元线性回归多元线性回归结果绘制;
目录
大多数最小二乘公式都是利用代价函数的偏导数推导出来的。这里先展示如何利用代价函数的偏导数得到最小二乘公式,再展示如何利用李阳老师讲解的向量到子空间的距离得到最小二乘公式。
最小二乘法
假设我们的拟合结果是:
那么平方损失函数为:
平方损失函数的形式只有最小值,没有最大值。我们要最小化代价函数,需要找到它的极值点,也就是偏导数都为0的点。每个参数的成本函数的偏导数如下:
求偏导数0:
事实上,如果你做:
有:
代价函数与最小二乘法
向量到子空间的距离与最小二乘法
下面是自己写的最小二乘拟合多项式和MATLAB自带函数polyfit拟合多项式的参数对比。注意,为了和MATLAB自己的函数保持一致,向量改为第一个参数n和最后一个参数 o,X矩阵也相应调整:
%最小平方多项式拟合
%原始三次函数随机噪声
f=@(x)x.^3 6。*x.^2-2.*x 4(兰特(尺寸(x))-.5)。*20;
%构建原始数据
x=-5:1:5;
y=f(x);
%自己写一个最小二乘。
n=3;%最大次数是三次。
X=(x )。^(n:-1:0);
1=((X * X) X * y );
% MATLAB自带多项式拟合
2=poly fit(x,y,n);
%输出比较
显示(1)
显示(2)
%一个小窍门,下面的写作可以很快
%参数向量成为关于x的匿名多项式函数
func=matlabFunction(poly 2 sym(1));
1=
0.9686 6.0178 -1.8845 4.3362
2=
0.9686 6.0178 -1.8845 4.3362
最小二乘法与多项式拟合
%绘图部分
%保持坐标区域不刷新并添加网格。
ax=gca按住(斧头,“开”);网格(ax, on );
%绘制原始数据点和拟合结果。
plot(x,y, o , MarkerFaceColor ,[94,142,179]。/255);
plot(x,func(x), Color ,[0,64,115]。/255,‘线宽’,2);
%来装饰它。
斧头。FontName= cambria
斧头。线宽=1.5;
斧头。gridline style=-;
斧头。XColor=[1,1,1]。*.3;
斧头。YColor=[1,1,1]。*.3;
斧头。ZColor=[1,1,1]。*.3;
多项式拟合结果绘图:
下面是自己写的多元线性回归最小二乘法和MATLAB自带的多元线性回归函数regressive的参数对比:
%最小二乘多元线性回归
%原始二元函数随机噪声
f=@(x1,x2) 3。*x1 4。*x2 5(兰德(尺寸(x1))-.5)。*10;
%构建原始数据
[x1,x2]=meshgrid(-5:5:5,-53:5);
y=f(x1,x2);
%自己写一个最小二乘。
X=[x1(:),x2(:),ones(size(x1(:))];
1=((X * X) X * y(:));
% MATLAB多元线性回归
2=回归(y(:),X);
%输出比较
显示(1)
显示(2)
%构建拟合结果的二元匿名函数。
func=matlabFunction([sym(x1 ),sym(x2 ),1]* theta 1);
1=
2.9285 4.0688 4.7520
2=
2.9285 4.0688 4.7520
最小二乘法与多元线性回归
%绘图部分
%保持坐标区域不刷新并添加网格。
ax=gca按住(斧头,“开”);网格(ax, on );
%绘制原始数据点和拟合结果。
网格(x1,x2,func(x1,x2), FaceColor , flat , FaceAlpha , 8)
散射3(x1(:),x2(:),y(:),20,“已填充”)
%来装饰它。
斧头。FontName= cambria
斧头。线宽=1.5;
斧头。gridline style=-;
斧头。XColor=[1,1,1]。*.3;
斧头。YColor=[1,1,1]。*.3;
斧头。ZColor=[1,1,1]。*.3;
视图(30,20)
以上是python机器学习MATLAB最小二乘法的两种解读的细节。更多关于MATLAB最小二乘法的解读,请关注盛行IT软件开发工作室的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。