对比numpy、scipy、sklearn线性回归函数:预处理与罚函数差异及疑问
最小二乘回归方法对比与疑问验证
待验证结论
scipy.linalg.lstsq()与sklearn.linear_model.LinearRegression本质逻辑一致,仅后者默认会执行数据预处理(中心化),可通过设置fit_intercept=False关闭该操作。- 二者默认实现可能因版本不同存在细节差异,但在数据集规模小、设备性能充足的场景下,不会对使用造成影响。
- 当要求回归系数为正时,
LinearRegression可设置positive=True参数;scikit-learn和numpy均提供非负最小二乘(NNLS)相关实现。
剩余疑问
需确认以下四种方法在罚函数、预处理等方面是否存在显著差异:
scipy.optimize.nnlssklearn.linear_model.LinearRegression(positive=True, fit_intercept=False)np.linalg.lstsqscipy.linalg.lstsq
场景说明:数据集规模较小,所有数值均为正,回归系数应为正(未指定参数时测试也得到正系数)。
已做测试发现
测试了np.linalg.lstsq、sklearn LinearRegression(positive=True)及scipy.nnls三种方法,结果显示:使用未经过sklearn StandardScaler标准化的原始数据时,拟合结果更准确。
内容的提问来源于stack exchange,提问作者drone no.204
相关产品推荐
相关产品推荐

