3-线性回归之使用正规方程来求解线性回归问题

使用正规方程来求解线性回归问题

1、接续前面两小节(1-线性回归之单变量线性回归基本原理的python实现_骑着蜗牛环游深度学习世界的博客-CSDN博客2-线性回归之多变量线性回归基本原理的python实现_骑着蜗牛环游深度学习世界的博客-CSDN博客

2、正规方程的使用受限:

​ ①特征数不能太多,通常来说当n小于10000 时还是可以接受的

​ ②只适用于线性模型,不适合逻辑回归模型等其他模型

3、正规方程的优点:

​ ①无需进行特征缩放(即无需归一化)

​ ②不需要迭代

1正规方程原理简述

  1. 正规方程是通过求解式(1)来找出使得代价函数最小的参数的:

∂ ∂ θ j J ( θ j ) = 0 (1) \frac{\partial }{\partial { {\theta }_{j}}}J\left( { {\theta }_{j}} \right)=0 \tag{1} θjJ(θj)=0(1)

  1. 对于训练集的特征矩阵 X X X(已包含 x 0 = 1 x_0=1 x0=1),标签向量 y y y,利用正规方程解出向量 θ = ( X T X ) − 1 X T y \theta ={ {\left( { {X}^{T}}X \right)}^{-1}}{ {X}^{T}}y θ=(XTX)1XTy,(具体的推导过程可以看下图)

在这里插入图片描述

2python实操

  1. 构建正规方程函数:
# 正规方程
def normalEqn(X, y):
    # 如果使用pinv则可以处理逆矩阵不存在的情况
    theta = np.linalg.inv(X.T@X)@X.T@y # X.T@X等价于X.T.dot(X)
    return theta
  1. 使用正规方程求解参数向量(这里使用的是第二篇文章的多特征数据集,为了与使用梯度下降的结果进行对比,还是进行了特征缩放):
# 多变量正规方程求解
raw_data = pd.read_csv('ex1data2.txt', names=['square', 'bedrooms', 'price'])
# 实际数据规范化结果
data = normalize_feature(raw_data)
X = get_X(data)

y = get_y(data)

final_theta2=normalEqn(X, y)
final_theta2
# 结果如下:

在这里插入图片描述

  • 从结果来看,还是有差距的

猜你喜欢

转载自blog.csdn.net/colleges/article/details/124773975