多项式拟合——用Matlab实现并分析

多项式拟合——用Matlab实现并分析


1、问题

    编程实现多项式拟合例子,体会overfitting


2、方法

    可以使用matlab中的方法实现多项式拟合。polyfit(x,y,n),其中n表示预测的多项式为n次。[p,S] = polyfit(x,y,n),p返回的是多项式的系数,S返回的有R,df以及normr,分别代表triangular factor,  degrees of freedom,  the norm of the residuals


3、具体实现

Matlab代码:

 

x=[0 0.3000 0.6000 0.9000 1.2000 1.5000 1.8000 2.1000 2.4000 2.7000 3.0000]

y=[2.0000 2.3780 3.9440 7.3460 13.2320 22.2500 35.0480 52.2740 74.5760 102.6020 137.0000]

 

%一次多项式模拟

P=polyfit(x,y,1);

xi=0:0.1:3.5;

yi=polyval(P,xi);

plot(xi,yi,x,y,'r*');

[a,b]=polyfit(x,y,1)

运行结果:

a =  42.4080  -22.4620

 

b =  R: [2x2 double]

    df: 9

normr: 56.0082

 多项式拟合——用Matlab实现并分析_第1张图片

                       图1


%二次多项式模拟

Q=polyfit(x,y,2);

yi=polyval(Q,xi);

plot(xi,yi,x,y,'r*');

[a,b]=polyfit(x,y,2)

运行结果

a =  21.0000  -20.5920    5.8880

 

b =   R: [3x3 double]

      df: 8

  normr: 8.4886

 多项式拟合——用Matlab实现并分析_第2张图片

                     图2

%三次多项式模拟

W=polyfit(x,y,3);

yi=polyval(W,xi);

plot(xi,yi,x,y,'r*');

[a,b]=polyfit(x,y,3)

运行结果

a =  4.0000    3.0000   -0.0000    2.0000

 

b =  R: [4x4 double]

     df: 7

     normr: 6.6125e-14

 多项式拟合——用Matlab实现并分析_第3张图片

 

                       图3

4、结果分析

        图1过于简单,属于under-fiting,图2正合适,存在恰当偏离曲线的点,图三所有点全部吻合,不符合实际,因为实际数据总有误差,属于over-fiting。综上,图2正合适,拟合的函数由运行结果可得:


你可能感兴趣的:(机器学习,多项式拟合,机器学习,matlab)