Python中具有正系数的线性回归
Posted
技术标签:
【中文标题】Python中具有正系数的线性回归【英文标题】:Linear Regression with positive coefficients in Python 【发布时间】:2016-06-29 10:30:06 【问题描述】:我正在尝试找到一种方法来拟合具有正系数的线性回归模型。
我找到的唯一方法是sklearn's Lasso model,它有一个positive=True
参数,但不建议使用alpha=0(意味着对权重没有其他限制)。
你知道另一种模式/方法/方法吗?
【问题讨论】:
【参考方案1】:许多函数可以保持具有正系数的线性回归模型。
-
scipy.optimize.nnls可以解决以上问题。
scikit-learn LinearRegression 可以设置参数positive=True来解决这个问题。而且,sklearn 还使用 scipy.optimize.nnls。有趣的是,您可以学习如何在源代码中编写多个目标输出。
此外,如果您想求解带有变量界限的线性最小二乘法。你可以看到lsq_linear
。
【讨论】:
【参考方案2】:从 0.24 版开始,scikit-learn LinearRegression
包含一个类似的参数 positive
,它就是这样做的;来自docs:
肯定:bool,默认=False
当设置为
True
时,强制系数为正。仅密集数组支持此选项。0.24 版中的新功能。
【讨论】:
【参考方案3】:IIUC,这是scipy.optimize.nnls
可以解决的问题,可以做非负最小二乘。
求解 argmin_x || Ax - b ||_2 表示 x>=0。
在您的情况下,b 是 y,A 是 X,而 x 是 β(系数),但除此之外,它是一样的,不是吗?
【讨论】:
以上是关于Python中具有正系数的线性回归的主要内容,如果未能解决你的问题,请参考以下文章