Ограниченная линейная регрессия в Python

У меня есть классическая линейнаязадача регрессии в форме:

y = X b

где yвектор откликаX— это матрица входных переменных, а b— вектор подходящих параметров, которые я ищу.

Python предоставляет b = numpy.linalg.lstsq( X , y )для решения задач этой формы.

Однако, когда я использую это, я получаю либо очень большие, либо очень маленькие значения для компонентов b.

Я хотел бы выполнить ту же подгонку, но ограничить значения bмежду 0 и 255.

Похоже, что scipy.optimize.fmin_slsqp()вариант, но я нашел его чрезвычайно медленным для интересующего меня размера проблемы ( X что-то вроде 3375 на 1500 и, надеюсь, даже больше).

  1. Существуют ли какие-либо другие параметры Python для выполнения наименьших ограничений? квадраты подходят?
  2. Или существуют подпрограммы Python для выполнения Lasso Регрессияили гребневая регрессия или другой метод регрессии что наказывает большие bзначения коэффициента?

17
задан ulmangt 14 April 2012 в 15:46
поделиться