scikit-learn - sklearn 的 LinearRegression 是否使用 SVD?
问题描述
我找不到 sklearn 的实现细节LinearRegression
。在https://scikit-learn.org/stable/modules/linear_model.html,第 1.1.1.2 节。似乎暗示它使用SVD。我认为我见过的大多数实现都使用 QR 分解。有谁知道为什么 sklearn 使用 SVD 代替(假设这确实是它使用的)?
解决方案
Scikit-learnLinearRegression
使用不同的算法来拟合回归模型:
scipy.linalg.lstsq
在密集的情况下positive=False
scipy.sparse.linalg.lsqr
在稀疏的情况下positive=False
scipy.optimize.nnls
什么时候positive=True
有关这些算法的更多详细信息,请参阅 scipy 文档:
scipy.linalg.lstsq
默认使用 LAPACK 求解器,称为gelsd
?gelsd。使用 A 的奇异值分解和分治法计算线性最小二乘问题的最小范数解。
scipy.sparse.linalg.lsqr
使用“迭代方法来近似解”scipy.optimize.nnls
使用基于“活动集方法”的“FORTRAN 求解器”
关于 scipy 在gelsd
中默认使用的选择scipy.linalg.lstsq
,例如参见这个线程。
推荐阅读
- angular - 如何使用 typescript 从 Angular 运行 curl 命令
- node.js - Firebase 将服务帐户设置为环境变量 Node.js
- android - 如何在 kotlin 中生成 10ms 定时器
- asp.net - Postman 发送到 ASP.net 的媒体类型不受支持
- c# - Prism 中的模块依赖不起作用
- python - 创建一个 scikit-learn 包
- javascript - 记忆和重复的承诺
- python - 属性错误:“系列”对象没有属性“数组”
- python - 日期在数据框中显示为无
- python - 如何在 Django 中使用引导模式对表数据进行删除确认?