python实现线性回归之最小二乘法,最小二乘法详解 | 您所在的位置:网站首页 › 求线性回归方程简单例题及解析 › python实现线性回归之最小二乘法,最小二乘法详解 |
线性回归是确定两种及两种以上变量的相互依赖关系。在数据分析中,线性回归是最简单且最有效的分析方法。举个简单的例子,某商品的利润在售价为2元、5元、10元时分别为4元、10元、20元,我们很容易得出商品的利润与售价的关系符合直线:
如上图所示,上图为一个简单的一元线性回归示意图,线性回归表示这些离散的点总体上“最逼近”哪条直线。同理,在二元线性回归中,离散的点在空间中最逼近哪个平面。其它多元线性回归亦是如此。线性回归在数据量化分析,数据预测方面有着重要应用。 2.最小二乘法同样是上图,那这些离散的点总体上“最逼近”哪条直线呢,这需要一个量化。对于同一x,实际数据为y,回归方程的推断数据为ax,则误差d=y-ax。最小二乘法定义为,当 对于多元变量,设 其回归方程为Y=Xa。同理,现在我们要求矩阵a的值,使得 取最小值即可。对上式进行微分求解(具体求解步骤可参考线性代数相关知识),可得 如果该矩阵满秩,则 上述便为最小二乘法的基本思想。 3.python实现一元线性回归测试: from numpy.linalg import inv # 矩阵求逆 from numpy import dot # 矩阵点乘 from numpy import mat # 二维矩阵 X = mat([1, 2, 3]).reshape(3, 1) # x为1,2,3 Y = mat([5, 10, 15]).reshape(3, 1) # y为5,10,15 a = dot(dot(inv(dot(X.T, X)), X.T), Y) # 最小二乘法公式 print(a)首先,这里推荐一个公式的代码实现技巧,代码从内向外写,即X的转置与X点乘,再求逆, 再与X的转置点乘,再与Y点乘,一层层加括号即可。 由上述代码不难看出,y与x的关系为y=5x,下面我们看测试结果是否为5: 测试结果正确。 实战: 这里准备了一组数据,数据示例截图如下:
上述数据为某一商品的销售量与售价、服务投资和其它投资的对应关系,即我们要求出:
代码如下: import numpy as np import pandas as pd from numpy.linalg import inv # 矩阵求逆 from numpy import dot # 矩阵点乘 dataset = pd.read_csv('C:\\Users\\57105\\Desktop\\data.csv') # 读入数据 X = dataset.iloc[:, 2: 5] # x为所有行,2到4列 Y = dataset.iloc[:, 1] # y为所有行,第1列 a = dot(dot(inv(np.dot(X.T, X)), X.T), Y) # 最小二乘法求解公式 print(a)测试结果: 即 上述便为线性回归的最小二乘法求解方式,关于线性回归的另一种求解方式—梯度下降法可见笔者相关文章。 |
CopyRight 2018-2019 实验室设备网 版权所有 |