Я использую функции randn
и normal
от модуля numpy.random
от Python. Функции очень похожи на то, что я читал в руководстве http://docs.scipy.org (оба они касаются распределения Гаусса), но есть ли какие-то более тонкие различия, о которых я должен знать? Если да, то в каких ситуациях мне будет лучше использовать определенную функцию?Python разница между randn и нормальным
ответ
randn
, похоже, дает распределение из некоторого стандартизованного нормального распределения (среднее значение 0 и дисперсия 1). normal
принимает больше параметров для большего контроля. Так rand
кажется просто удобной функцией
В конце они называют ту же C-функцию ('rk_gauss'). Я думаю, что 'randn' существует в основном для того, чтобы сделать новообращенных MATLAB счастливыми. MATLAB 'randn' кажется более или менее идентичным. –
Ahh, в каком файле они определены? Я подумал, что это так, и немного посмотрел в источник, но я не смог его найти. – M4rtini
'numpy/random/mtrand/distributions.c' –
Я статистик, который иногда кодирует, а не наоборот, поэтому я могу ответить с некоторой точностью.
Глядя на документы, которые вы связаны в вашем вопросе, я выделю некоторые из ключевых отличий:
нормальных:
numpy.random.normal(loc=0.0, scale=1.0, size=None)
# Draw random samples from a normal (Gaussian) distribution.
# Parameters :
# loc : float -- Mean (“centre”) of the distribution.
# scale : float -- Standard deviation (spread or “width”) of the distribution.
# size : tuple of ints -- Output shape. If the given shape is, e.g., (m, n, k), then m * n * k samples are drawn.
Таким образом, в этом случае, вы генерируя GENERIC нормальное распределение (подробнее об этом позже).
randn:
numpy.random.randn(d0, d1, ..., dn)
# Return a sample (or samples) from the “standard normal” distribution.
# Parameters :
# d0, d1, ..., dn : int, optional -- The dimensions of the returned array, should be all positive. If no argument is given a single Python float is returned.
# Returns :
# Z : ndarray or float -- A (d0, d1, ..., dn)-shaped array of floating-point samples from the standard normal distribution, or a single such float if no parameters were supplied.
В этом случае, вы генерируя КОНКРЕТНОГО нормальное распределение, стандартное распределение.
Теперь некоторые из математики, что действительно необходимо, чтобы получить в центре Вашего вопроса:
Нормальное распределение является распределением, где значения более вероятно происходить вблизи среднего значения , В природе существует множество случаев этого. Например, средняя высокая температура в Далласе в июне составляет, скажем, 95 F. Это может достигать 100 или даже 105 средних за один год, но, как правило, оно будет около 95 или 97. Точно так же оно может достигать 80, но более вероятно 85 или 90.
Таким образом, это принципиально отличается от, скажем, равномерного распределения (свертывание честной 6-сторонней матрицы).
стандартное нормальное распределение просто нормальное распределение, где среднее значение равно 0, а дисперсия (математический термин для вариации) равен 1.
Так,
numpy.random.normal(size= (10, 10))
это точно такая же вещь, как написание
numpy.random.randn(10, 10)
, поскольку значения по умолчанию (loc = 0, scale = 1) для numpy.random.normal
являются фактически стандартом .
Чтобы сделать дела более запутанной, как numpy random documentation состояний:
sigma * np.random.randn(...) + mu
такая же, как
np.random.normal(loc= mu, scale= sigma, ...)
* Конечная нота: Я использовал термин дисперсия математически описать изменение. Некоторые люди говорят о стандартном отклонении. Разница просто равна квадрату стандартного отклонения. Поскольку дисперсия = 1 для стандартного распределения, в данном случае стандартного распределения, variance == standard deviation
.
Ваш ответ кажется интересным. Но как можно генерировать шум, если, например, измерение скорости? Шум должен содержать только положительные значения.?! Если это так, нормальное распределение не может генерировать положительное значение, верно? – Spider
Я не уверен, что буду следовать, @Spider. Если я буду следовать за вами, вы спрашиваете, как значения могут быть ниже среднего. Определение стандартного отклонения - это вариация ВОКРУГ среднего. То есть, выше и ниже. Недостаточно места здесь, чтобы войти в него, но посмотрите http://en.wikipedia.org/wiki/Standard_deviation или http://en.wikipedia.org/wiki/Normal_distribution –
О, теперь я получаю то, что вы говорили: да, «скорость» (а не скорость, которая является вектором) должна иметь только положительные числа. И да, нормальное распределение допускает отрицательные числа. Поэтому, как уже говорит ваша интуиция, скорость не соответствует нормальному распределению. Существует множество других типов распределений, таких как Poisson или Binomial. –
- 1. Разница между нормальным конструктором и мутатором? Java
- 2. Разница между нормальным интерфейсом и интерфейсом MBean
- 3. Разница между JavaBean, POJO и нормальным классом?
- 4. Разница между обратным ajax и нормальным ajax
- 5. Разница между упакованным и нормальным типом данных
- 6. Разница между нормальным php и скомпилированным php?
- 7. Разница между нормальным AJAX и длительным опросом
- 8. Разница между динамическим массивом и нормальным массивом
- 9. В чем разница между пониманием списка Python и нормальным циклом?
- 10. Правда разница между «нормальным» и импорт «внутри-функции» в Python
- 11. Разница между нормальным настраиваемой случае статический RoutedEvent
- 12. Разница между нормальным циклом списка и использованием среза?
- 13. В чем разница между подписанным и нормальным коротким
- 14. Разница между нормальным классом и классом MVC в C#
- 15. Разница между нормальным и умножением массива в приборе()
- 16. mysql - разница между полным текстом и «нормальным» индексом
- 17. Разница между нормальным профилем и профилем инициализации iOS
- 18. Разница между CryptoJS.enc.Base64.stringify() и нормальным Base64 шифрования
- 19. В чем разница между статическим классом и нормальным классом?
- 20. В чем разница между продолжениями и нормальным вызовом?
- 21. Разница между gmaps и нормальным кросс-доменом ajax-запрос
- 22. Сериализация необязательно вложенных структур: разница между QueryDict и нормальным dict?
- 23. Разница между нормальным буфером и пространственным префиксным буфером в Emacs?
- 24. Разница между Spyder IPython и «нормальным» IPython sys.path
- 25. Разница между datacontext и нормальным созданием объекта в C#
- 26. разница между распределением кортежей памяти и нормальным переменным распределением памяти
- 27. Разница между нормальным указателем и указателем const в c
- 28. Разница между классом Testng и нормальным классом Java
- 29. В чем разница между IOT и нормальным индексом?
- 30. В чем разница между NSArray и нормальным массивом?
Они кажутся мне разными. 'normal': Нарисуйте случайные выборки из нормального (гауссовского) распределения. 'randn': возвращает случайную матрицу с данными из стандартного нормального распределения – hughdbrown
@hughdbrown Такое же распределение, немного другой способ использования. –