es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Los resultados de normalización no son los mismos.

Estoy realizando la normalización en los datos aleatorios. Calculé la media y la desviación estándar de los datos y estoy normalizando mediante la fórmula Norm = (dato – media) / desviación_estándar, pero no obtengo el mismo resultado que la función de normalización de numpy y tampoco obtengo la curva en forma de campana.

import numpy as np
from scipy.stats import norm
a = np.arange(-4, 4)
media = sum(a/len(a))
desviación_estándar = (np.sqrt(sum((a-media)**2)/(len(a)-1)))
y1 = norm.pdf(a, media, desviación_estándar)
y2 = (a - media) / desviación_estándar
print(y1)
print(y2)

salida

y2 = [0.05868028 0.09674742 0.1350219  0.15950953 0.15950953 0.1350219
 0.09674742 0.05868028]

y1 = [-1.42886902 -1.02062073 -0.61237244 -0.20412415  0.20412415  0.61237244
  1.02062073  1.42886902]

¿Cuál es el problema?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Hay algunos problemas con el código:

    1. El cálculo de la media es incorrecto. En lugar de mean = sum(a/len(a)), debería ser mean = np.mean(a).
    2. La desviación estándar debería calcularse utilizando np.std(a, ddof=1) en lugar de la fórmula actual utilizada.

    3. La función norm.pdf() calcula la función de densidad de probabilidad de una distribución normal, mientras que y2 está calculando los valores estandarizados de a.

    Para corregir el código, aquí está la versión modificada:

    import numpy as np
    from scipy.stats import norm
    
    a = np.arange(-4, 4)
    
    mean = np.mean(a)
    std = np.std(a, ddof=1)
    
    y1 = norm.pdf(a, mean, std)
    y2 = (a - mean) / std
    
    print(y1)
    print(y2)
    

    Ahora el código debería producir los resultados correctos y la curva de forma de campana será visible en y1.

Comments are closed.