-机器学习算法-最小二乘法与回归[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. #麦好:myhaspl@qq.com  
  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)  





多元非线性回归


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

1)一元三次回归方程


部分python代码如下:

[python]  view plain copy print ?
  1. #!/usr/bin/env python  
  2. # -*- coding: utf-8 -*-  
  3. #最小二乘法,非线性回归,单变量多项式回归  
  4. #麦好:myhaspl@qq.com  
  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

>>> 



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

  \widehat{y}=a+b_{11}x_1+b_{21}x_2+b_{12}x_1^2+b_{22}x_2^2+b_{11\times22}x_1x_2

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

  \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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值