最小二乘法直线回归Python,最小二乘法求非线性回归方程

  最小二乘法直线回归Python,最小二乘法求非线性回归方程

  线性回归是确定两个或多个变量的相互依赖关系。在数据分析中,线性回归是最简单有效的分析方法。举个简单的例子,当一件商品的价格为2元、5元、10元时,利润分别为4元、10元、20元。我们很容易得出这样的结论:一件商品的利润和销售价格之间的关系符合一条直线:在上面的简单线性回归方程中,我们称“2”为回归系数,即斜率就是它的回归系数。回归系数表明商品的利润(y)等于其售价(x)的每一单位变化。

  1.线性回归

  如上图所示,上图是一个简单的一维线性回归图。线性回归表示这些离散点总体上“最接近”哪条直线。同样,在二元线性回归中,哪个平面最接近空间中的离散点?其他多元线性回归也是如此。线性回归在数据定量分析和数据预测中起着重要的作用。

  2.最小二乘法同上图,那么这些离散点总体上“最接近”哪条直线呢?它需要量化。对于同一个x,实际数据为y,回归方程推断数据为ax,则误差d=y-ax。最小二乘法定义为,当d最小时,回归方程的拟合度最高。根据a,对最小二乘法的定义方程进行微分,求极值,即可得到a。

  对于多元变量,设

  ,

  回归方程为Y=Xa。类似地,现在我们要求矩阵A的值,所以

  只取最小值。对上述公式进行微分求解(具体求解步骤参考线性代数相关知识),可以得到

  如果矩阵是满秩的,那么

  以上是最小二乘法的基本思想。

  3.python实现

  from numpy.linalg从numpy导入inv #矩阵从numpy导入点#矩阵点乘从numpy导入mat #二维矩阵X=mat([1,2,3])。shape(3,1) # x是1,2,3Y=mat([5,10,15])。reshape(3,1) # y是5,10,15a=dot (dot (inv (dot (x.t,x)),y) #最小二乘公式print(a)。首先,这里推荐一个公式的代码实现技巧。代码是由内向外编写的,即

  从上面的代码不难看出,y和x的关系是y=5x。我们来看看测试结果是不是5:

  测试结果是正确的。

  一元线性回归测试:

  这里准备了一组数据,样本数据截图如下:

  以上数据是一种商品的销售量与售价、服务投入和其他投入的对应关系,即我们要求:

  ,

  培养基,基质a.

  代码如下:

  import numpy as NP import pandas as PD from numpy . Lina LG import inv # matrix inversion from numpy import dot # matrix点乘dataset=PD . Read _ CSV( c:\ \ users \ \ 57105 \ \ desktop \ \ data . CSV )# Read-in data X=dataset . iloc[:2: 5] # x为所有行,列2到4 Y=dataset.iloc[:1] # y为所有行,列1 a=dot (dot (inv (np.dot (x.t

  即对于单个数据,即回归方程反映商品销售量与售价、服务投入和其他投入之间的关系。

  以上是求解线性回归的最小二乘法,求解线性回归的另一种方法——梯度下降法,可以在作者的相关文章中找到。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: