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
См. также
Примечания
Методы оценки оптимального количества бинов хорошо обоснованы в литературе и вдохновлены выбором, который предоставляет R для визуализации гистограмм. Обратите внимание, что наличие количества бинов, пропорциональных
, асимптотически оптимально, поэтому оно появляется в большинстве оценок. Это просто методы подстановки, которые дают хорошие начальные значения для числа бинов. В уравнениях ниже,
— это ширина бина, а
— количество бинов. Все оценки, которые вычисляют количество бинов, преобразуются в ширину бина с помощью
ptpданных. Окончательное количество бинов получается изnp.round(np.ceil(range / h)).- ‘Auto’ (максимум оценок «Sturges» и «FD»)
- Компромисс для получения хорошего значения. Для небольших наборов данных обычно выбирается значение Sturges, а для больших наборов данных обычно используется значение FD. Избегает чрезмерно консервативного поведения FD и Sturges для малых и больших наборов данных соответственно. Точка переключения обычно
.
- ‘FD’ (оценщик Фридмана-Дикона)
-
Ширина бина пропорциональна межквартильному размаху (IQR) и обратно пропорциональна кубическому корню из a.size. Может быть слишком консервативным для малых наборов данных, но довольно хорошим для больших наборов данных. IQR очень устойчив к выбросам.
- ‘Scott’
-
Ширина бина пропорциональна стандартному отклонению данных и обратно пропорциональна кубическому корню из
x.size. Может быть слишком консервативным для малых наборов данных, но довольно хорошим для больших наборов данных. Стандартное отклонение не очень устойчиво к выбросам. Значения очень похожи на оценку Фридмана-Дикона в отсутствие выбросов. - ‘Rice’
-
Количество бинов пропорционально только кубическому корню из
a.size. Он имеет тенденцию переоценивать количество бинов и не учитывает изменчивость данных. - ‘Sturges’
-
Количество бинов равно логарифму по основанию 2 от
a.size. Этот оценщик предполагает нормальность данных и слишком консервативен для больших наборов данных, не являющихся нормальными. Это метод по умолчанию в методеhistв R. - ‘Doane’
-
Улучшенная версия формулы Стаджерса, которая производит лучшие оценки для наборов данных, не являющихся нормальными. Этот оценщик пытается учесть асимметрию данных.
- ‘Sqrt’
-
Самый простой и быстрый оценщик. Учитывает только размер данных.
Примеры
>>> 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