Estoy tratando de estandarizar las columnas del conjunto de datos para la regresión lineal.
Una de las columnas tiene desviación estándar = 0.
def standardize(X):
return (X - mean(X)) / std(X)
Entonces este código no funciona.
¿Hay algún truco para resolver este problema? He intentado dos cosas
- Deseche la columna con la desviación estándar 0 porque es un parámetro inútil.
- Agregue un ruido muy pequeño como a uno de los elementos de la columna para que la función funcione.
standardize
¡Gracias!
regression
standardization
Pratik Deoghare
fuente
fuente
Respuestas:
La situación que describe surgirá como resultado de uno de estos dos escenarios:
Para el escenario 1 : omita esa columna, estandarice todas las demás columnas y luego ejecute la regresión como lo haría normalmente.
Para el escenario 2 , sin embargo, tendrá que deshacerse de esa columna constante adicional por completo. De hecho, independientemente de la cuestión de la estandarización , nunca podrá ejecutar la regresión con dos columnas constantes, ya que tendría una colinealidad perfecta . El resultado es que incluso si intenta ejecutar la regresión, el programa de computadora emitirá un mensaje de error y se cerrará a la mitad [Nota: esto se debe a que una regresión OLS requiere que la matriz X'X no sea singular para que las cosas funcionen correctamente].
De todos modos, ¡buena suerte con tu, um, regresando!
[****] Solo para aclarar: lo que quiero decir con "dos columnas de constantes" es que tienes una columna en la que cada elemento es '1' y una segunda columna en la que cada elemento es una constante 'k'. .
fuente
La forma correcta sería eliminar la columna de características de los datos. Pero como un truco temporal ...
Simplemente puede reemplazar el 0 std a 1 para esa función. Esto básicamente significaría que el valor escalado sería cero para todos los puntos de datos para esa característica. Esto tiene sentido ya que esto implica que los valores de las características no se desvían ni un poco de la media (como los valores son constantes, la constante es la media).
FYI- ¡Esto es lo que hace sklearn! https://github.com/scikit-learn/scikit-learn/blob/7389dbac82d362f296dc2746f10e43ffa1615660/sklearn/preprocessing/data.py#L70
fuente
La característica que tiene variación cero es inútil, quítela.
Considere esto, si esta fuera la única característica, no aprendería nada sobre la respuesta a esta característica a partir de los datos. En el caso multivariante, se necesita álgebra lineal para llegar a la misma conclusión, pero la idea es la misma.
fuente