-机器学习算法-最小二乘法与回归[4]

来自:http://blog.csdn.net/myhaspl/article/details/9323317

多元线性回归

一元线性回归是一个主要影响因素作为自变量来解释因变量的变化,在现实问题研究中,因变量的变化往往受几个重要因素的影响,此时就需要用两个或两个以上的影响因素作为自变量来解释因变量的变化,这就是多元回归亦称多重回归。当多个自变量与因变量之间是线性关系时,所进行的回归分析就是多元性回归。

  设y为因变量,x_1,x_2,\cdots x_k为自变量,并且自变量与因变量之间为线性关系时,则多元线性回归模型为:

  y=b_0+b_1x_1+b_2x_2+\cdots+b_kx_k+e

python实现后效果如下:

参数项矩阵为[[ 3.]
 [ 2.]
 [ 1.]]
http://blog.csdn.net/u010255642
3.000000*x1+2.000000*x2+1.000000*x3+-0.000000
>>> 

本博客所有内容是原创,未经书面许可,严禁任何形式的转载

http://blog.csdn.net/u010255642


python代码如下:

[python]  view plain copy print ?
  1. #!/usr/bin/env python  
  2. # -*- coding: utf-8 -*-  
  3. #最小二乘法,多变量线性回归  
  4. #麦好:[email protected]  
  5. #http://blog.csdn.net/u010255642  
  6.    
  7. import numpy as np  
  8.   
  9. x =np.matrix([[7,2,3],[3,7,17],[11,3,5]],dtype=np.float64)  
  10. y =np.matrix([28,40,44],dtype=np.float64).T  
  11. b=(x.T*x).I*x.T*y  
  12. print u"参数项矩阵为{0}".format(b)  
  13. i=0  
  14. cb=[]  
  15. while  i<3:  
  16.     cb.append(b[i,0])  
  17.     i+=1  
  18. temp_e=y-x*b  
  19. mye=temp_e.sum()/temp_e.size  
  20. e=np.matrix([mye,mye,mye]).T  
  21. print "http://blog.csdn.net/u010255642"  
  22. print "%f*x1+%f*x2+%f*x3+%f"%(cb[0],cb[1],cb[2],mye)  





多元非线性回归


如果自变数与依变数Y皆具非线性关系,或者有的为非线性有的为线性,则选用多元非线性回归方程是恰当的。

1)一元三次回归方程


部分python代码如下:

[python]  view plain copy print ?
  1. #!/usr/bin/env python  
  2. # -*- coding: utf-8 -*-  
  3. #最小二乘法,非线性回归,单变量多项式回归  
  4. #麦好:[email protected]  
  5. #http://blog.csdn.net/u010255642  
  6. #y=b1*x+b2*(x^2)+b3*(x^3)  
  7. ..................  
  8. z=np.matrix([3,1.4,1.9]).T  
  9. myx =np.matrix([[4],[3],[5]],dtype=np.float64)  
  10. x = np.matrix([[myx[0,0],myx[0,0]**2,myx[0,0]**3],\  
  11.                [myx[1,0],myx[1,0]**2,myx[0,0]**3],\  
  12.                [myx[2,0],myx[2,0]**2,myx[0,0]**3]],\  
  13.                dtype=np.float64)  
  14. ...........  
[python]  view plain copy print ?
  1. mye=temp_e.sum()/temp_e.size  
  2. e=np.matrix([mye,mye,mye]).T  
  3. print "http://blog.csdn.net/u010255642"  
  4. print "%f*x+%f*x^2+%f*x^3+%f"%(cb[0],cb[1],cb[2],mye)  
[python]  view plain copy print ?
  1. pltx=np.linspace(0,10,1000)  
  2. plty=cb[0]*pltx+cb[1]*(pltx**2)+cb[2]*(pltx**3)+mye  
  3. plt.plot(myx,y,"*")  
  4. plt.plot(pltx,plty)  
  5. plt.show()  
[python]  view plain copy print ?
  1.   

效果:

>>> 

参数项矩阵为[[ 3. ]

 [ 1.4]

 [ 1.9]]

http://blog.csdn.net/u010255642

3.000000*x+1.400000*x^2+1.900000*x^3+0.000000

>>> 

-机器学习算法-最小二乘法与回归[4]_第1张图片


(2)二元二次多项式回归方程为:

  

  令b_1=b_{11},b_2=b_{21},b_3=b_{12},b_4=b_{22},b_5=b_{11\times22},及于是上式化为五元一次线性回归方程:

  \widehat{y}=a+b_1x_1+b_2x_2+b_3x_3+b_4x_4+b_5x_5

  建立二元二次多项式回归方程。

python代码同(1)差不多

执行效果

参数项矩阵为[[ 3. ]
 [ 1.4]
 [ 1.9]]
http://blog.csdn.net/u010255642
3.000000*x1+1.400000*x2^2+1.900000*x1*x2+0.000000


你可能感兴趣的:(-机器学习算法-最小二乘法与回归[4])