在Python中使用正系数的线性回归

11

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

我找到的唯一方法是sklearn的Lasso模型,它有一个positive=True参数,但不建议在alpha=0(表示没有其他约束权重)时使用。

你知道还有其他的模型/方法/方式吗?

3个回答

6
IIUC,这是一个可以通过使用 scipy.optimize.nnls 解决的问题,该函数可以进行非负最小二乘法。

求解 argmin_x || Ax - b ||_2,其中 x>=0。

在您的情况下,byAXxβ(系数),但除此之外,其他都一样,对吧?

3
许多函数可以保持具有正系数的线性回归模型。
  1. scipy.optimize.nnls 可以解决上述问题。
  2. scikit-learn LinearRegression 可以设置参数 positive=True 来解决这个问题。而且,sklearn 还使用了 scipy.optimize.nnls。有趣的是,在源代码中,你可以学会如何编写多目标输出
  3. 另外,如果你想要在变量的范围内解决线性最小二乘问题。你可以看一下lsq_linear

0
从版本0.24开始,scikit-learn的LinearRegression类包含一个类似的参数positive,它可以实现这个功能;来自于docs
引用: positive : bool, default=False 当设置为True时,强制系数为正。此选项仅支持密集数组。 版本0.24中新增。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接