资源描述:
《模式识别-线性拟合实验报告-黄志强》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、线性拟合-实验报告内蒙古大学计算机学院31209003黄志强一.实验方法:1最小二乘法2梯度下降法二.公式推导1最小二乘用线性函数ha(x)=a0+a1*x来拟合y=f(x);构造代价函数J(a):代价函数分别对a0和a1求偏导,连个偏导数都等于0成为两个方程,两个方程联合求解得到a0和a1;2梯度下降构造代价函数J(a),J(a)对a0,a1分别求偏导得到梯度,〆J(a)/〆a0=n*a0+a1*sumx-sumy;〆J(a)/〆a1=a1*sumx*sumx+a0*sumx-sumx*sumy;
2、tidu_a0=n*a0+a1*sumx-sumy;tidu_a1=a1*sumxx+a0*sumx-sumxy;设置步长为l,迭代m次delta_r=sqrt(tidu_a0*tidu_a0+tidu_a1*tidu_a1);a0=a0-l*(tidu_a0/tidu_r);a1=a1-l*(tidu_a1/tidu_r);每次迭代显示得到的直线和mse,并修订学习率%显示直线x2=[-0.1,1.1];y2=x2.*a1+a0;plot(x2,y2,'color',[1-i/m,1-i/m,1-
3、i/m]);%显示错误error=0;forj=1:nerror=error+(y(j)-(a1*x(j)+a0))*(y(j)-(a1*x(j)+a0));endmse=error/n;l=mse;mse三.matlab代码1最小二乘法代码:%in是一个100行2列的矩阵,两列分别为x和y。用一条直线y=x*a+b拟合x和y的关系;%用最小二乘法计算a和b。x=in(1:100,1);y=in(1:100,2);sumx=0;sumy=0;sumxx=0;sumyy=0;sumxy=0;fori=
4、1:1:100sumx=sumx+x(i);sumy=sumy+y(i);sumxx=sumxx+x(i)*x(i);sumyy=sumyy+y(i)*y(i);sumxy=sumxy+x(i)*y(i);endplot(in(:,1),in(:,2),'r.');%用红色的点画出100个样本点holdon;%保留当前绘图,不被下次绘图遮盖n=100;[b,a]=solve('n*a0+a1*sumx=sumy','a0*sumx+a1*sumxx=sumxy','a0','a1');%解二元一次方
5、程组,未知数为a0,a1,结果返回给b和a。a=eval(a);%eval(str),把str当做一条语句执行b=eval(b);x2=[0,1];%知道解析式y=a*x+b,画直线的方法y2=x2.*a+b;%因为x2是一个向量,所以用x2.表示plot(x2,y2);%制动化一条以x2为x,以y2为y的直线mse=0;error=0;fori=1:nerror=error+(y(i)-(a*x(i)+b))*(y(i)-(a*x(i)+b));endmse=error/n;mse2梯度下降法代码
6、:x=in(1:100,1);y=in(1:100,2);sumx=0;sumy=0;sumxx=0;sumyy=0;sumxy=0;fori=1:1:100sumx=sumx+x(i);sumy=sumy+y(i);sumxx=sumxx+x(i)*x(i);sumyy=sumyy+y(i)*y(i);sumxy=sumxy+x(i)*y(i);endplot(in(:,1),in(:,2),'r.');holdon;a0=2;a1=1;l=0.5;n=100;m=50;fori=0:1:mtid
7、u_a0=n*a0+a1*sumx-sumy;tidu_a1=a1*sumxx+a0*sumx-sumxy;tidu_r=sqrt(tidu_a0*tidu_a0+tidu_a1*tidu_a1);a0=a0-l*(tidu_a0/tidu_r);a1=a1-l*(tidu_a1/tidu_r);x2=[-0.1,1.1];y2=x2.*a1+a0;plot(x2,y2,'color',[1-i/m,1-i/m,1-i/m]);error=0;forj=1:nerror=error+(y(j)-(a
8、1*x(j)+a0))*(y(j)-(a1*x(j)+a0));endmse=error/n;l=mse;mseend四.运行结果1最小二乘法结果:2梯度下降法结果五.误差1最小二乘法A1=3.679365985769617A0=--1.030876273676726均方误差mse=0.04292梯度下降法(起点为a0=2,a1=1;迭代次数为50次)A1=3.67860477725630A0=-1.00565713447357均方误差mse=0.0436六.附数据i