Распределение Нормального (Гауссова) Распределения в Numpy (Случайное Нормальное в Numpy)
В этом уроке вы узнаете, как использовать функцию Numpy random.normal для создания нормальных (или гауссовских) распределений. Функция предоставляет вам инструменты, позволяющие создавать распределения с определенными средними значениями и стандартными распределениями. Кроме того, вы можете создавать распределения различного размера.
К концу этого урока вы узнаете:
Что такое нормальное (гауссово) распределение?
Как использовать функцию
numpy.random.normal()
для создания нормальных распределенийКак указать среднее значение, стандартное отклонение и форму распределения
Как построить графики распределения с помощью Seaborn
Оглавление
Что такое нормальное (гауссово) распределение?
Нормальное распределение описывает распространенное явление, которое возникает, когда данные распределены определенным образом. Это означает, что данные не смещены в какую-либо сторону, но и не рассыпаны хаотично. Фактически, они формируют кривую в форме колокола, аналогичную приведенной ниже диаграмме:
Вы, возможно, думаете: "Как часто это может происходить?" На самом деле, довольно часто. Например, рост и вес людей в основном распределены нормально. Так же как артериальное давление, оценки за тесты и изделия, произведенные машинами.
Когда мы говорим о том, что данные распределены нормально, мы имеем в виду:
Они расположены вдоль среднего значения
Они следуют правилам, касающимся стандартных отклонений
На изображении выше темно-синие линии представляют собой 1 стандартное отклонение от среднего в обоих направлениях. Согласно гауссовскому распределению, ~68,2% значений будут находиться в пределах одного стандартного отклонения.
Если вы хотите научиться проверять, является ли распределение нормальным, ознакомьтесь с моим руководством по использованию Python для тестирования на нормальность
Как использовать Numpy для создания нормального распределения
Функция random.normal
в библиотеке numpy используется для создания массивов, которые соответствуют нормальному или Гауссовому распределению. Эта функция обладает высокой гибкостью, поскольку позволяет задавать различные параметры для формирования массива. За кулисами Numpy гарантирует, что полученные данные будут иметь нормальное распределение.
Давайте посмотрим, как работает функция:
Хотя функция имеет всего три параметра, она предоставляет значительные возможности для настройки возвращаемого массива. Давайте узнаем немного больше о этих параметрах:
loc=
представляет среднее значение (или центр) распределения и по умолчанию равно 0.0scale=
представляет стандартное отклонение и по умолчанию равно 1.0Параметр
size=
немного сложнее. Он принимает либо целое число, либо кортеж целых чисел. Если передается число, создается одномерный массив заданного размера. Если передается кортеж, например (x, y), будет создан массив размером x * y.
Давайте создадим ваш первый дистрибутив:
В приведенном выше примере вы создали нормальное распределение из 20 значений, с центром вокруг среднего равного 0 и со стандартным отклонением равным 1.
В следующем разделе вы узнаете, как построить полученное распределение с использованием Seaborn.
Как построить нормальное распределение с помощью Seaborn
В этом разделе вы узнаете, как визуализировать созданное вами распределение с помощью Seaborn. Seaborn специализируется на визуализации статистических распределений. В данном примере вы будете использовать функцию histplot, которая служит для визуализации распределений.
Давайте создадим вашу первую визуализацию:
Это возвращает следующее изображение:
Вы можете подумать, что распределение действительно не выглядит нормальным. Это потому, что мы выбрали только 20 значений. Давайте создадим пример с 2000 значениями и посмотрим, как изменится визуализация:
Это возвращает следующее изображение:
В следующем разделе вы научитесь изменять среднее значение нормального распределения с использованием функции random normal в Numpy.
Как изменить среднее значение нормального распределения в Python Numpy
По умолчанию функция random.normal()
в Numpy использует среднее значение 0. Часто возникает необходимость изменить это значение. Это легко сделать, используя аргумент loc=
. Аргумент по умолчанию равен 0.0, но изменение его значения изменит среднее значение распределения.
Давайте воссоздадим приведенный выше пример, используя среднее значение 100:
Это возвращает следующее распределение:
В этом случае распределение выглядит аналогично, но данные сосредоточены вокруг значения 100. В следующем разделе вы узнаете, как изменить стандартное отклонение нормального распределения.
Как изменить стандартное отклонение нормального распределения в Python Numpy
Точно так же, как вы можете желать указать среднее значение вашего результирующего распределения, вы также можете захотеть изменить стандартное отклонение набора данных.
Это можно сделать, используя параметр scale=
. Давайте изменим стандартное отклонение на 20.
Это возвращает следующее распределение:
В следующем разделе вы узнаете, как изменить форму полученного массива.
Как изменить форму нормального распределения в Numpy
Одной из удивительных особенностей функции numpy.random
normal является то, что она позволяет легко определить форму получаемого массива. До сих пор мы указывали значение параметра size
в виде целого числа.
Когда вы передаете кортеж целых чисел, это изменяет форму массива с одномерного на многомерный массив. Если вы передаете кортеж значений (2, 3), вы получите массив с двумя строками и тремя столбцами.
Результирующий массив будет иметь нормальное распределение. Давайте создадим пример, где мы создадим массив 2×10:
Заключение
В этом уроке вы научились использовать функцию normal модуля Numpy для создания нормального распределения. Вы узнали, как задать количество значений в массиве, среднее значение массива и стандартное отклонение массива с помощью этой функции. Также вы научились использовать Seaborn для визуализации этого распределения.
Дополнительные ресурсы
Для изучения смежных тем ознакомьтесь с нижеприведенными учебными пособиями:
NumPy для науки о данных в Python
Учебное пособие по стандартному отклонению Python: объяснение и примеры
Среднее значение Pandas: рассчитать среднее значение Pandas для одного или нескольких столбцов
Last updated