Python中具有正系数的线性回归

时间:2016-03-14 11:43:39

标签: python machine-learning scikit-learn linear-regression

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

我找到的唯一方法是sklearn's Lasso model,它有正=真参数,但不建议使用alpha = 0(意味着没有其他权重约束)。

您知道其他模型/方法/方法吗?

由于

3 个答案:

答案 0 :(得分:4)

IIUC,这是一个可以通过scipy.optimize.nnls解决的问题,它可以做非负最小二乘法。

  

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

在您的情况下, b y A X x β(系数),但是,它是相同的,不是吗?

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

从 0.24 版本开始,scikit-learn LinearRegression 包含一个类似的参数 positive,它正是这样做的;来自docs

<块引用>

positive : bool, default=False

当设置为 True 时,强制系数为正。此选项仅适用于密集数组。

0.24 版中的新功能。