от
Я хочу, чтобы нормальная кривая соответствовала уже имеющейся гистограмме. navf2 - это список нормализованных случайных чисел, и гистограмма основана на них, и я хочу, чтобы кривая показала общий тренд гистограммы.
while len(navf2)
             

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.

2 Ответы

0 голосов
от
Ну вот: = ^ .. ^ =
from scipy.stats import norm
import numpy as np
import matplotlib.pyplot as plt

# create raw data
data = np.random.uniform(size=252)

# distribution fitting
mu, sigma = norm.fit(data)

# fitting distribution
x = np.linspace(

Выход:


    
0 голосов
от
Вот еще одно решение с использованием вашего кода, как указано в вопросе. Мы можем достичь ожидаемого результата без использования библиотеки scipy. нам нужно будет сделать три вещи, вычислить среднее значение набора данных, вычислить стандартное отклонение набора и создать функцию, которая генерирует нормальную или гауссову кривую. Чтобы вычислить среднее значение, мы можем использовать функцию в библиотеке numpy, т.е.
mu = np.mean(your_data_set_here)
Стандартное отклонение набора представляет собой квадратный корень из суммы разностей значений и среднего квадрата https://en.wikipedia.org/wiki/Standard_deviation. Мы можем выразить это в коде следующим образом, снова используя библиотеку numpy:
data_set = [] # some data set 
sigma = np.sqrt(1/(len(data_set))*sum((data_set

Наконец, мы должны построить функцию для нормальной кривой или гауссовой https://en.wikipedia.org/wiki/Gaussian_function, она зависит как от среднего значения (mu
), так и от стандартного отклонения (
sigma
), поэтому мы будем использовать их как параметры в нашей функции:
def Gaussian(x,sigma,mu): # sigma is the standard deviation and mu is the mean
    return ((1/(np.sqrt(2*np.pi)*sigma))*np.exp(

все это выглядит так:

import numpy as np
import matplotlib.pyplot as plt

navf2 = []
while len(navf2)
...