Python 中的正系数线性回归

问题描述 投票:0回答:3

我正在尝试找到一种方法来拟合具有正系数的线性回归模型。

我发现的唯一方法是sklearn的Lasso模型,它有一个

positive=True
参数,但不建议与
alpha=0
一起使用(意味着对权重没有其他限制)。

你知道另一种模型/方法/方式吗?

python machine-learning scikit-learn linear-regression
3个回答
6
投票

IIUC,这个问题可以通过

scipy.optimize.nnls
来解决,它可以做非负最小二乘。

解决argmin_x || Ax - b ||_2 对于 x>=0。

在您的情况下,byAXxβ(系数),但是,否则,它是相同的,不是吗?


4
投票

许多函数可以保持具有正系数的线性回归模型。

  1. scipy.optimize.nnls可以解决上述问题。
  2. scikit-learn LinearRegression可以设置参数
    positive=True
    来解决这个问题。而且,sklearn 还使用
    scipy.optimize.nnls
    。有趣的是,您可以学习如何在源代码中编写多个目标输出
  3. 此外,如果您想求解具有变量界限的线性最小二乘法。你可以看到lsq_线性 .

1
投票

从版本 0.24 开始,scikit-learn

LinearRegression
包含一个类似的参数
positive
,它正是这样做的;来自文档

正:布尔,默认=False

设置为

True
时,强制系数为正。此选项仅支持密集数组。

0.24版本新增功能。

© www.soinside.com 2019 - 2024. All rights reserved.