我正在尝试找到一种方法来拟合具有正系数的线性回归模型。
我发现的唯一方法是sklearn的Lasso模型,它有一个
positive=True
参数,但不建议与alpha=0
一起使用(意味着对权重没有其他限制)。
你知道另一种模型/方法/方式吗?
scipy.optimize.nnls
来解决,它可以做非负最小二乘。
解决argmin_x || Ax - b ||_2 对于 x>=0。
在您的情况下,b是y,A是X,x是β(系数),但是,否则,它是相同的,不是吗?
许多函数可以保持具有正系数的线性回归模型。
positive=True
来解决这个问题。而且,sklearn 还使用 scipy.optimize.nnls
。有趣的是,您可以学习如何在源代码中编写多个目标输出。从版本 0.24 开始,scikit-learn
LinearRegression
包含一个类似的参数 positive
,它正是这样做的;来自文档:
正:布尔,默认=False
设置为
时,强制系数为正。此选项仅支持密集数组。
True
0.24版本新增功能。