sklearn如何求解线性回归

sklearn是如何求解线性回归问题的?

有没有脱口而出梯度下降,起码我自己下意识的认为是使用梯度下降,直到有一次无意中看到sklearn的用户指导手册,1.1.1.2 一行小小的备注:

The least squares solution is computed using the singular value decomposition of X.

哦?原来sklearn是用SVD求解线性回归啊~

线性回归的loss function就是在求解最小二乘(least squares)嘛,那么来简单聊一下为什么SVD可以用来求解最小二乘问题。

最小二乘问题,就是给定一组线性方程组 A x = b Ax = b Ax=b,求 x x x是什么,这个方程组一般来说是 超定方程(overdetermined),也就是说方程的个数大于未知数的数量, 最典型的就是线性回归问题。

最小二乘问题是通过最小化 ∥ b − A x ∥ 2 \left \| b - Ax \right \|_{2} bAx2得到的 x x x作为解,这里的 x x x是未知数, A A A自变量, b b b因变量。机器学习里面通常用 x x x标记自变量 y y y标记因变量,系数用 w w w标记。

写成element-wise:
min ⁡ ∑ i = 1 m [ b i − ( A x ) i ] 2 \min \sum_{i =1}^{m}[b_i - (Ax)_i] ^ 2 mini=1m[bi(Ax)i]2

其中 A A A是一个 m × n m \times n m×n的矩阵,表示我们有 m m m个样本 n n n个未知数。

下面的讨论,我们都假设 A A A满秩的:

任意矩阵都可以进行SVD分解,不要问为什么,就是这么牛x,如果对 A A A进行SVD分解可以得到三个矩阵:
A = U Σ V T A = U \Sigma V^{T}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用sklearn求解线性回归问题时,可以通过使用sklearn中的LinearRegression模型来实现。LinearRegression是sklearn中用于实现线性回归的类。它基于最小二乘法估计线性回归模型的参数。要使用LinearRegression模型,首先需要导入相应的库和数据集,然后创建一个LinearRegression对象,将数据集拟合到该模型中,并使用模型进行预测。 下面是使用sklearn求解线性回归问题的一般步骤: 1. 导入所需的库和数据集:首先,导入sklearn库中的LinearRegression模型,以及其他可能需要使用的库和数据集。 2. 准备数据集:将数据集划分为特征矩阵X和目标变量y。 3. 创建LinearRegression对象:使用LinearRegression()函数创建一个LinearRegression对象。 4. 拟合数据集:使用LinearRegression对象的fit()方法将特征矩阵X和目标变量y拟合到模型中,从而得到线性回归模型。 5. 预测:使用LinearRegression对象的predict()方法对新的特征矩阵进行预测,得到预测结果。 下面是一个示例代码: ```python # 导入所需的库和数据集 import numpy as np from sklearn.linear_model import LinearRegression # 准备数据集 X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]]) y = np.dot(X, np.array([1, 2])) + 3 # 创建LinearRegression对象 model = LinearRegression() # 拟合数据集 model.fit(X, y) # 预测 new_X = np.array([[3, 5], [4, 6]]) predictions = model.predict(new_X) # 打印预测结果 print(predictions) ``` 在上述示例代码中,我们首先导入了numpy和sklearn的LinearRegression模型。然后,我们准备了一个包含两个特征的数据集X和相应的目标变量y。接下来,我们创建了一个LinearRegression对象,并使用fit()方法将数据集拟合到模型中。最后,我们使用predict()方法对新的特征矩阵进行预测,并打印了预测结果。 请注意,上述示例代码中的数据集X和目标变量y只是为了演示目的而创建的简示例。在实际应用中,您需要根据具体情况准备和处理您的数据集。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值