Python中的约束线性回归

ulm*_*ngt 17 python numpy mathematical-optimization scipy linear-regression

我有一个经典的线性回归问题的形式:

y = X b

其中y响应向量 X是一个矩阵输入变量的和b是拟合参数我寻找的矢量.

Python提供b = numpy.linalg.lstsq( X , y )了解决此形式的问题.

但是,当我使用它时,我倾向于得到组件的极大或极小的值b.

我想执行相同的拟合,但约束b0到255之间的值.

它看起来像是scipy.optimize.fmin_slsqp()一个选项,但我发现它对我感兴趣的问题的大小非常缓慢(X有点像3375 by 1500希望甚至更大).

  1. 是否还有其他Python选项可用于执行约束最小二乘拟合?
  2. 或者是否有用于执行套索回归或岭回归的python例程或其他一些惩罚大系b数值的回归方法?

con*_*lee 10

你提到你会发现Lasso Regression或Ridge Regression可以接受.scikit-learn包中提供了这些和许多其他约束线性模型.查看有关广义线性模型部分.

通常约束系数涉及某种正则化参数(C或alpha)---一些模型(以CV结尾的模型)可以使用交叉验证来自动设置这些参数.您还可以进一步约束模型以仅使用正系数 - 例如,在Lasso模型上有一个选项.


til*_*ten 8

看看:http: //scipy-central.org/item/17/3/pymls-solving-bounded-linear-least-squares-problems

Openopt还绑定了bvls,另一个有界线性lsq求解器.

编辑:你也可以试试scipy.optimize.nnls就够了.