1 votos

Normalizar una lista de desviaciones estándar

Tengo varias columnas de características que necesito normalizar a valores entre 0 y 1 (o -1 y 1, etc. -- algo estándar) para poder hacer regresiones usando algoritmos ML (como SVR, KNN, etc.).

El problema es que muchas de las características son desviaciones estándar reales, o permutaciones de desviaciones estándar (lo que significa básicamente que la magnitud de sus valores lleva la misma "información" que las desviaciones estándar).

Estaba tratando de pensar en una manera de normalizar las desviaciones estándar sin perder las proporciones - si hago una normalización regular (restar el mínimo, dividir por el máximo), entonces todas mis normas se vuelven equidistantes.

Entonces me di cuenta de que podía calcular los porcentajes encerrados por la desviación estándar.

¿Cuál es la fórmula para convertir una desviación estándar en su porcentaje (voy a suponer una distribución normal)?

Encontré algo de Z-score... pero lo que realmente necesito es: f(1,0) = 0,68/2 (creo que 0,68 está encerrado por un std, ¿no?) y f(-1,0) = -0,34. Entonces dividiría por 2 y añadiría 0,5 (poniendo los valores entre 0 y 1).

Mi mejor suposición en este momento es la función de error de las desviaciones estándar, que van desde los valores de 0-1, con su punto de inflexión centrado en 0... ¿Es eso correcto?

0voto

Tiskolin Puntos 8

Nvm. Lo tengo. No estoy seguro de si debería borrarlo ahora... pero lo dejaré hasta/sin recibir comentarios negativos...

Para convertir la información de la desviación estándar en porcentajes -f(std) -> prob(std)- basta con ejecutar la función 'erf' (error) en su std.

La función de error es:

$$0.5*(1+erf((x-\mu)/(\sigma*\sqrt{2})))$$

Utilice $\mu = 0$ y $std = x$ .

La función de error debe aproximarse en el ordenador. Acabo de copiar mi aproximación de un código que encontré en alguna parte:

def erf(x):
   # save the sign of x
   sign = 1 if x >= 0 else -1
   x = abs(x)

   # constants
   a1 =  0.254829592
   a2 = -0.284496736
   a3 =  1.421413741
   a4 = -1.453152027
   a5 =  1.061405429
   p  =  0.3275911

   # A&S formula 7.1.26
   t = 1.0/(1.0 + p*x)
   y = 1.0 - (((((a5*t + a4)*t) + a3)*t + a2)*t + a1)*t*math.exp(-x*x)
   return sign*y

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X