Spec-Zone.ru › NumPy 1.16

numpy.histogram_bin_edges

numpy.histogram_bin_edges(a, bins=10, range=None, weights=None) [source]

Функция для вычисления только границ бинов, используемых функцией histogram.

Параметры:
a : array_like

Входные данные. Гистограмма вычисляется по сплющенному массиву.

bins : int or sequence of scalars or str, optional

Если bins является целым числом, оно определяет количество равномерно распределенных бинов в заданном диапазоне (10 по умолчанию). Если bins является последовательностью, она определяет границы бинов, включая правую границу, что позволяет использовать неравномерную ширину бинов.

Если bins — строка из списка ниже, histogram_bin_edges будет использовать выбранный метод для вычисления оптимальной ширины бина и, следовательно, количества бинов (см. Notes для получения более подробной информации об оценщиках) на основе данных, попадающих в заданный диапазон. Хотя ширина бина будет оптимальной для фактических данных в диапазоне, количество бинов будет вычислено для заполнения всего диапазона, включая пустые части. Для визуализации рекомендуется использовать опцию «auto». Данные с весами не поддерживаются для автоматического выбора размера бинов.

‘auto’

Максимум из оценок «sturges» и «fd». Обеспечивает хорошую общую производительность.

‘fd’ (оценщик Фридмана-Дикона)

Робастная (устойчивая к выбросам) оценка, которая учитывает изменчивость данных и размер данных.

‘doane’

Улучшенная версия оценки Стаджерса, которая лучше работает с наборами данных, не являющимися нормальными.

‘scott’

Менее робастная оценка, которая учитывает изменчивость данных и размер данных.

‘stone’

Оценка, основанная на оценке перекрёстной проверки с выбросом одного значения (leave-one-out) интегральной квадратичной ошибки. Может рассматриваться как обобщение правила Скотта.

‘rice’

Оценка не учитывает изменчивость, а только размер данных. Часто переоценивает необходимое количество бинов.

‘sturges’

Метод по умолчанию в R, учитывает только размер данных. Оптимален только для нормальных данных и недооценивает количество бинов для больших наборов данных, не являющихся нормальными.

‘sqrt’

Оценка квадратного корня (из размера данных), используемая в Excel и других программах для скорости и простоты.

range : (float, float), optional

Нижний и верхний пределы бинов. Если не указаны, диапазон просто (a.min(), a.max()). Значения вне диапазона игнорируются. Первый элемент диапазона должен быть меньше или равен второму. range также влияет на автоматическое вычисление бинов. Хотя ширина бина вычисляется оптимально на основе фактических данных внутри range, количество бинов будет заполнять весь диапазон, включая части, не содержащие данных.

weights : array_like, optional

Массив весов, имеющий ту же форму, что и a. Каждое значение в a вносит свой связанный вес в подсчет количества бинов (вместо 1). В настоящее время это не используется ни одним из оценителей бинов, но может быть использовано в будущем.

Возвращает:
bin_edges : array of dtype float

Границы, которые нужно передать в histogram

См. также

histogram

Примечания

Методы оценки оптимального количества бинов хорошо обоснованы в литературе и вдохновлены выбором, который предоставляет R для визуализации гистограмм. Обратите внимание, что наличие количества бинов, пропорциональных n^{1/3}, асимптотически оптимально, поэтому оно появляется в большинстве оценок. Это просто методы подстановки, которые дают хорошие начальные значения для числа бинов. В уравнениях ниже, h — это ширина бина, а n_h — количество бинов. Все оценки, которые вычисляют количество бинов, преобразуются в ширину бина с помощью ptp данных. Окончательное количество бинов получается из np.round(np.ceil(range / h)).

‘Auto’ (максимум оценок «Sturges» и «FD»)
Компромисс для получения хорошего значения. Для небольших наборов данных обычно выбирается значение Sturges, а для больших наборов данных обычно используется значение FD. Избегает чрезмерно консервативного поведения FD и Sturges для малых и больших наборов данных соответственно. Точка переключения обычно a.size \approx 1000.
‘FD’ (оценщик Фридмана-Дикона)

h = 2 \frac{IQR}{n^{1/3}}

Ширина бина пропорциональна межквартильному размаху (IQR) и обратно пропорциональна кубическому корню из a.size. Может быть слишком консервативным для малых наборов данных, но довольно хорошим для больших наборов данных. IQR очень устойчив к выбросам.

‘Scott’

h = \sigma \sqrt[3]{\frac{24 * \sqrt{\pi}}{n}}

Ширина бина пропорциональна стандартному отклонению данных и обратно пропорциональна кубическому корню из x.size. Может быть слишком консервативным для малых наборов данных, но довольно хорошим для больших наборов данных. Стандартное отклонение не очень устойчиво к выбросам. Значения очень похожи на оценку Фридмана-Дикона в отсутствие выбросов.

‘Rice’

n_h = 2n^{1/3}

Количество бинов пропорционально только кубическому корню из a.size. Он имеет тенденцию переоценивать количество бинов и не учитывает изменчивость данных.

‘Sturges’

n_h = \log _{2}n+1

Количество бинов равно логарифму по основанию 2 от a.size. Этот оценщик предполагает нормальность данных и слишком консервативен для больших наборов данных, не являющихся нормальными. Это метод по умолчанию в методе hist в R.

‘Doane’

n_h = 1 + \log_{2}(n) +
            \log_{2}(1 + \frac{|g_1|}{\sigma_{g_1}})

g_1 = mean[(\frac{x - \mu}{\sigma})^3]

\sigma_{g_1} = \sqrt{\frac{6(n - 2)}{(n + 1)(n + 3)}}

Улучшенная версия формулы Стаджерса, которая производит лучшие оценки для наборов данных, не являющихся нормальными. Этот оценщик пытается учесть асимметрию данных.

‘Sqrt’

n_h = \sqrt n

Самый простой и быстрый оценщик. Учитывает только размер данных.

Примеры

>>> arr = np.array([0, 0, 0, 1, 2, 3, 3, 4, 5])
>>> np.histogram_bin_edges(arr, bins='auto', range=(0, 1))
array([0.  , 0.25, 0.5 , 0.75, 1.  ])
>>> np.histogram_bin_edges(arr, bins=2)
array([0. , 2.5, 5. ])

Для согласованности с гистограммой массив предварительно вычисленных бинов передаётся без изменений:

>>> np.histogram_bin_edges(arr, [1, 2])
array([1, 2])

Эта функция позволяет вычислить набор бинов и повторно использовать его в нескольких гистограммах:

>>> shared_bins = np.histogram_bin_edges(arr, bins='auto')
>>> shared_bins
array([0., 1., 2., 3., 4., 5.])
>>> group_id = np.array([0, 1, 1, 0, 1, 1, 0, 1, 1])
>>> hist_0, _ = np.histogram(arr[group_id == 0], bins=shared_bins)
>>> hist_1, _ = np.histogram(arr[group_id == 1], bins=shared_bins)
>>> hist_0; hist_1
array([1, 1, 0, 1, 0])
array([2, 0, 1, 1, 2])

Что обеспечивает более легко сравнимые результаты, чем использование отдельных бинов для каждой гистограммы:

>>> hist_0, bins_0 = np.histogram(arr[group_id == 0], bins='auto')
>>> hist_1, bins_1 = np.histogram(arr[group_id == 1], bins='auto')
>>> hist_0; hist1
array([1, 1, 1])
array([2, 1, 1, 2])
>>> bins_0; bins_1
array([0., 1., 2., 3.])
array([0.  , 1.25, 2.5 , 3.75, 5.  ])

© 2005–2019 NumPy Developers
Licensed under the 3-clause BSD License.
https://docs.scipy.org/doc/numpy-1.16.1/reference/generated/numpy.histogram_bin_edges.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API