I tiene un problema classic linear regresión de la forma:constreñido de regresión lineal en Python
y = X b
donde y
es un vector respuestaX
es una matriz de variables de entrada y b
es el vector de ajustar los parámetros que estoy buscando.
Python proporciona b = numpy.linalg.lstsq(X , y)
para la solución de problemas de esta forma.
Sin embargo, cuando uso esto, suelo obtener valores extremadamente grandes o extremadamente pequeños para los componentes de b
.
me gustaría realizar la misma forma, pero restringir los valores de b
entre 0 y 255.
Parece que scipy.optimize.fmin_slsqp()
es una opción, pero me pareció extremadamente lento para el tamaño del problema I' m interesado en (X
es algo así como 3375 by 1500
y con suerte aún más grande).
- ¿Hay alguna otra opción de Python para realizar ajustes de cuadrados menos restringidos ?
- ¿O hay rutinas de pitón para realizar Lasso Regression o Ridge Regression o algún otro método de regresión que penaliza valores de coeficientes grandes
b
?
Agradable, en la superficie que suena exactamente lo que necesito.Ser capaz de proporcionar pesos a las filas de la matriz de variables de entrada 'X' también puede ser muy útil para mí (tengo una idea de la fiabilidad de varios puntos de datos que me pueden permitir aprovechar). Definitivamente voy a intentarlo, ¡gracias! – ulmangt
No está realmente bien probado, espero que funcione para usted. El código es puro pitón y debería ser fácil de probar. – tillsten
'scipy.opimize.nnls' es un buen consejo también. Simplemente restringir a valores no negativos puede ser suficiente. Las soluciones 'numpy.linalg.lstsq' parecían equilibrar enormes valores' b' positivos con valores 'b' negativos igualmente grandes. – ulmangt