1 votos

Normalización del volumen

Supongamos que tenemos volúmenes cada minuto como los siguientes

100, 200 , 19,  0 , 200 , 12 , 100

Quiero convertir todos estos números a menos de 10 , donde 10 es el máximo y 1 el mínimo.

Puedo hacer esto con la normalización pero el problema ocurre cuando hay algún volumen alto repentino viene como abajo

100, 200 , 19,  0 , 200 , 12 , 20000

donde cuando uso la normalización para los últimos 100 volúmenes, , este 20000 está afectando a todos los demás volúmenes.

¿Hay algo que pueda hacer tomando los promedios de los volúmenes y haciendo una normalización para eso o algo así?

1voto

dotnetcoder Puntos 1262

Como es tu modelo puedes hacer cualquier cosa. Lo que yo haría es utilizar alguna exclusión dinámica de valores atípicos. Por ejemplo, en este caso sabes que el mínimo es cero.

Un método (de entre muchos) podría ser evaluar la mediana (ya que podría ser más sólida que la desviación estándar o la media) y utilizar 2 x mediana como límite superior:

>>> arr = np.array([100,200,19,0,200,12,20000])
>>> upper_lim = np.median(arr) * 2
>>> arr_adj = np.where(arr>upper_lim, upper_lim, arr) / upper_lim
>>> arr_adj *= 10
>>> arr_adj
array([5, 10, 0.95, 0, 10, 0.6, 10])

0 votos

Eso fue brillante, ¿me puede dar código en javascript para mí?

0 votos

Numpy es un paquete de python diseñado para este tipo de cálculo eficiente. si te interesa repetir en javascript tienes que replicar cada paso. prueba aquí github.com/nicolaspanel/numjs y aquí stackoverflow.com/questions/45309447/

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X