Визуализация распределения данных и ядерная оценка плотности в Python
Покупка
Новинка
Тематика:
Программирование и алгоритмизация
Год издания: 2024
Кол-во страниц: 96
Дополнительно
Вид издания:
Учебно-методическая литература
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-7882-3479-3
Артикул: 853616.01.99
Рассмотрены возможности библиотек Python для визуализации распределения данных. Приведены примеры построения гистограмм, kde- и ecdf-графиков, а также кумулятивных кривых в каждой из рассмотренных библиотек. Показано, как можно получить координаты графиков в библиотеке Plotly. На тестовом примере продемонстрированы результаты работы созданной авторами программы. Для оценки уровня усвоения студентами пройденного материала предложены варианты самостоятельных работ.
Предназначено для бакалавров, обучающихся по направлениям подготовки 09.03.02 «Информационные системы и технологии», 18.03.01 «Химическая технология», 28.03.02 «Наноинженерия», 29.03.04 «Технология художественной обработки материалов», 29.03.05 «Конструирование изделий легкой промышленности», изучающих дисциплины «Теория вероятностей и математическая статистика», «Обработка экспериментальных данных», «Большие данные», «Алгоритмы и структура данных», «Вычислительная математика».
Подготовлено на кафедре информатики и прикладной математики.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.02: Информационные системы и технологии
- 18.03.01: Химическая технология
- 28.03.02: Наноинженерия
- 29.03.04: Технология художественной обработки материалов
- 29.03.05: Конструирование изделий легкой промышленности
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Министерство науки и высшего образования Российской Федерации Казанский национальный исследовательский технологический университет А. Н. Титов, Р. Ф. Тазиева ВИ З УА ЛИЗ АЦ И Я РАСП РЕДЕЛЕН И Я ДАН НЫ Х И ЯДЕРНАЯ О ЦЕН КА П ЛО ТНО СТИ В PY TH ON Учебно-методическое пособие Казань Издательство КНИТУ 2024
УДК 004.42(075) ББК 32.97я7 Т45 Печатается по решению редакционно-издательского совета Казанского национального исследовательского технологического университета Рецензенты: канд. пед. наук, доц. С. М. Куценко канд. экон. наук, доц. О. С. Семичева Т45 Титов А. Н. Визуализация распределения данных и ядерная оценка плотности в Python : учебно-методическое пособие / А. Н. Титов, Р. Ф. Тазиева; Минобрнауки России, Казан. нац. исслед. технол. ун-т. – Казань : Изд-во КНИТУ, 2024. – 96 с. ISBN 978-5-7882-3479-3 Рассмотрены возможности библиотек Python для визуализации распределения данных. Приведены примеры построения гистограмм, kde- и ecdf-графиков, а также кумулятивных кривых в каждой из рассмотренных библиотек. Показано, как можно получить координаты графиков в библиотеке Plotly. На тестовом примере продемонстрированы результаты работы созданной авторами программы. Для оценки уровня усвоения студентами пройденного материала предложены варианты самостоятельных работ. Предназначено для бакалавров, обучающихся по направлениям подготовки 09.03.02 «Информационные системы и технологии», 18.03.01 «Химическая технология», 28.03.02 «Наноинженерия», 29.03.04 «Технология художественной обработки материалов», 29.03.05 «Конструирование изделий легкой промышленности», изучающих дисциплины «Теория вероятностей и математическая статистика», «Обработка экспериментальных данных», «Большие данные», «Алгоритмы и структура данных», «Вычислительная математика». Подготовлено на кафедре информатики и прикладной математики. УДК 004.42(075) ББК 32.97я7 ISBN 978-5-7882-3479-3 © Титов А. Н., Тазиева Р. Ф., 2024 © Казанский национальный исследовательский технологический университет, 2024 2
С О Д Е Р Ж А Н И Е Введение ......................................................................................................................... 4 1. СОЗДАНИЕ ГИСТОГРАММ ................................................................................... 6 1.1. Построение гистограмм в библиотеке Matplotlib ......................................... 10 1.2. Построение гистограмм в библиотеке Seaborn ............................................ 16 1.3. Построение гистограмм в библиотеке Plotly ................................................ 23 1.4. Построение гистограмм в библиотеке Altair ................................................ 28 2. ЯДЕРНАЯ ОЦЕНКА ПЛОТНОСТИ РАСПРЕДЕЛЕНИЯ. ЭТАПЫ ПОСТРОЕНИЯ ............................................................................................................ 32 3. ПОСТРОЕНИЕ KDE-ГРАФИКОВ И КУМУЛЯТИВНЫХ КРИВЫХ В БИБЛИОТЕКАХ PYTHON ..................................................................................... 66 3.1. Построение кумулятивных кривых в Matplotlib .......................................... 66 3.2. Построение kde- и ecdf-графиков в Seaborn ................................................. 67 3.3. Построение kde-графиков в Plotly ................................................................. 75 3.4. Построение kde-графиков в Altair.................................................................. 80 Задания для самостоятельной работы ....................................................................... 85 Литература ................................................................................................................... 93 3
В В Е Д Е Н И Е Одним из первых шагов при создании любого информационного продукта является понимание имеющихся в распоряжении аналитика необработанных («сырых») данных. Одним из методов, используемых для понимания и изучения данных, является их визуализация. Создавая подходящие и хорошо продуманные визуализации, можно обнаружить основную структуру и взаимосвязи в данных. Графики распределения имеют решающее значение для исследовательского анализа данных. Они помогают нам обнаружить, какой диапазон охватывают данные, какова их центральная тенденция, симметрично или асимметрично их распределение, является ли распределение данных унимодальным или мультимодальным, присутствуют ли в данных выбросы. Визуализация данных может включать в себя графики, диаграммы, таблицы и карты, которые могут быть интерактивными или статичными, и применяется для отображения различных типов данных. Цель визуализации – помочь в восприятии данных, их анализе и принятии решений на основе имеющихся данных. Визуализация помогает превратить сложные и неструктурированные данные в информацию, которую можно визуально интерпретировать и легко анализировать. Одними из самых распространенных способов визуализации данных являются построение гистограмм, полигонов частот, ядерной оценки плотности и кумулятивных кривых. Гистограмма – это графическое представление имеющихся данных. Это один из ключевых элементов в области визуализации и анализа данных. С помощью гистограмм данные не только выглядят аккуратнее, но их легче сравнивать. Гистограммы применяются в самых различных областях: в статистике – для отображения распределения данных, в финансах – для визуализации распределения доходов или расходов и оценки финансовой стабильности, в маркетинге – для анализа цен на товары, продаж и прочих показателей, в медицине – для анализа распределения заболеваний и оценки эффективности лекарственных препаратов, в инженерии – для анализа технических данных, например распределения сил, температур и давления, в data science – для анализа данных, сравнения моделей и прогнозирования результатов, в образовании – для визуализации результатов тестов и оценки успеваемости обучающихся. 4
Несмотря на многие достоинства, которыми обладают гистограммы, у них есть и ряд серьезных недостатков. Они сильно зависят от количества интервалов, выбор которых неоднозначен, от максимальных и минимальных значений переменной, представляют собой кусочно-постоянную функцию с одинаковыми значениями внутри интервала. График распределения можно назвать непрерывным сглаженным аналогом гистограммы. Самый распространенный вариант построения такого графика – ядерная оценка плотности. В этом методе для каждой точки данных строится непрерывная кривая – ядро. Из построенных кривых получают единую гладкую оценку плотности. Другим способом графического представления данных является кумулятивная функция распределения, преимущества которой состоят в том, что нет необходимости выбирать количество интервалов и для ее построения не нужна никакая аппроксимация, как с ядерной оценкой плотности. Все перечисленные возможности визуализации реализованы, в частности, в библиотеках Python. В представленном авторами пособии демонстрируется визуализация данных с использованием библиотек Matplotlib, Seaborn, Plotly и Altair. Данные библиотеки являются универсальными. Их работа поддерживается на популярных операционных системах – Windows, macOS и Linux. С ними можно работать как через облачный сервис Google Colab, так и в различных интегрированных средах разработки, поддерживающих язык программирования Python. Пособие включает в себя три главы. В первой главе приведены примеры построения гистограмм в этих четырех библиотеках. Во второй главе рассмотрены этапы построения ядерной оценки плотности с созданием программного кода, осуществляющего это построение. Результатами работы кода являются построение графика ядерной оценки плотности в соответствии с выбранным типом ядра с возможностью варьирования интервала значений пропускной способности ядра для сглаживания полученного графика с помощью слайдера. В третьей главе показано, как можно строить kde-графики и/или графики кумулятивных кривых в упомянутых ранее библиотеках. Материал, изложенный в пособии, может быть использован при проведении лабораторных занятий по дисциплинам «Теория вероятностей и математическая статистика», «Обработка экспериментальных данных», «Большие данные», «Алгоритмы и структура данных», «Вычислительная математика». 5
. С О З Д А Н И Е Г И С Т О Г Р А М М Рассмотрим одномерное непрерывное распределение. Пусть (х1, x2, …,xn) – выборка наблюдений, представленная в виде вариационного ряда 1 2 3 ( ... ) n x x x x . При большом числе наблюдений (порядка сотен) простая статистическая совокупность перестает быть удобной формой записи статистического материала – она становится слишком громоздкой и малонаглядной. Для придания ему большей компактности и наглядности статистический материал должен быть подвергнут дополнительной обработке – строится так называемый статистический ряд. Пусть в выборке (х1, x2,…, xn) есть одинаковые элементы. Перепишем выборку в другом виде: z1, z2,…, zk, где k – количество различных значений признака, причем каждое значение zi встречается ровно ni раз. Число ni называется частотой элемента zi. Очевидно, что ∑ 𝑛𝑖= 𝑛 𝑘 𝑖=1 . Статистическим рядом называется последовательность пар (zi, ni). При большом объеме выборки ее элементы объединяются в группы, представляя экспериментальные данные в виде группированного статистического ряда. Для этого интервал, содержащий все элементы выборки, разбивают на m непересекающихся интервалов. Вычисления значительно упрощаются, если интервалы имеют одинаковую длину. После того как частичные интервалы выбраны, определяют частоты – количество ni элементов выборки, попавших в i-й интервал. Наряду с частотами одновременно подсчитывают также накопленные i частоты n j = , относительные частоты i n j 1 n и накопленные относительi n j = j 1 ные частоты . Полученные результаты сводят в таблицу частот n группированной выборки. Группировка выборки вносит погрешность в дальнейшие вычисления. Пусть имеется выборка (х1, x2, …,xn) из генеральной совокупности с признаком Х. Пусть распределение Х неизвестно. Для того чтобы получить первое представление об этом распределении в случае количественного признака, строят так называемую гистограмму. Для этого разбивают действительную ось на конечное число промежутков . Подсчитывают частоты ni выборочных значений, лежащих m ,..., 1 6
в i-м интервале ( 1, ). i m = Над i рисуют прямоугольники, высоты котоn рых равны i nh , где hi – ширина соответствующего интервала. Полученi ный ступенчатый график называют гистограммой. Площадь полученной фигуры равна единице. Вычисления значительно упрощаются, если интервалы имеют одинаковую длину. В дальнейшем, как правило, будем рассматривать только этот случай. Построим таблицу частот и гистограмму по данным о размерах зарплат, предлагаемых работодателями в России (табл. 1.1). Данные взяты с сайта1 (доступ 17.01.24). Таблица 1.1 Распределение размера зарплат, предлагаемых работодателями в России, по интервалам (сведения на 17.01.24) Границы интервалов, тыс. руб. 10–20 20–30 30–40 40–50 50–60 60–70 70–80 80–90 90–100 Количество предложений ni 1981227 1872196 1649513 1373879 1092512 879278 715764 595528 489149 Для построения гистограмм (нормированной и ненормированной) и полигона частот оформим вспомогательную таблицу: i 𝑛𝑖 Накопленная относительная Частота i n j 𝑛ℎ Относительная частота i n n j = h i = h j ni 1 n j Границы интервалов, тыс. руб. частота 1 = n 10–20 1981227 1981227 10 0,186047055 0,186047055 0,01860471 20–30 1872196 3853423 10 0,175808503 0,361855558 0,01758085 30–40 1649531 5502954 10 0,154899154 0,516754712 0,01548992 40–50 1373879 6876833 10 0,129014062 0,645768774 0,01290141 50–60 1092512 7969345 10 0,102592303 0,748361077 0,01025923 60–70 879278 8848623 10 0,082568571 0,830929648 0,00825686 70–80 715764 9564387 10 0,067213795 0,898143442 0,00672138 80–90 595528 10159915 10 0,055923037 0,954066479 0,0055923 90–100 489149 10649064 10 0,045933521 1 0,00459335 На рис. 1.1 представлена ненормированная гистограмма. По оси Х отложены значения середин интервалов. 1Система поиска вакансий: сайт. URL: https://gorodrabot.ru/ 7
Рис. 1.1. Ненормированная гистограмма, построенная по данным табл. 1.1 Нормированная гистограмма и полигон частот для той же таблицы представлены на рис. 1.2. Сумма площадей всех прямоугольников на рисунке равна единице. Рис. 1.2. Нормированная гистограмма и полигон частот При увеличении объема выборки и уменьшении длины интервала ) (x f X гистограмма относительных частот является статистическим аналогом плотности распределения генеральной совокупности. Одной из оценок теоретической функции распределения является эмпирическая функция распределения. Она позволяет оценить вероятность того, что случайная величина Х принимает значение, меньшее некоторого числа х, и вычисляется по формуле 8
* 1 ( ) , n i = F x n n z x i где суммируются частоты тех элементов выборки, для которых выполняется неравенство . Очевидно, что при значениях x, не * = x F n x zi 0 ) ( превышающих минимального значения в выборке, и *( ) 1 n F x = при значениях х, превышающих максимальное значения. На остальных промежутках представляет собой неубывающую кусочно-постоянную ) ( * x Fn функцию. Значение эмпирической функции распределения для статистики определяется теоремой Гливенко: пусть – эмпирическая функция ) ( * x Fn распределения, построенная по выборке объема n из генеральной совокупности с функцией распределения . Тогда для любого x и лю) (x FX бого ε > 0 . * = − 1 ) ) ( ) ( ( lim → x F x F P X n n Таким образом, для любого x сходится по вероятности к ) ( * x Fn ) (x FX и, следовательно, при большом объеме выборки может служить оценкой функции распределения генеральной совокупности в каждой точке x. По данным табл. 1.1 построим график эмпирической функции распределения (рис. 1.3). Рис. 1.3. График эмпирической функции распределения 9
В приведенных примерах данные были заданы в виде интервального ряда. На практике так бывает редко, набор данных обычно не сгруппирован. При работе в библиотеках Python, как правило, будет рассмотрен именно этот случай. Группировка и подсчет соответствующих частот будет осуществляться автоматически: пользователь задает лишь количество интервалов k. К сожалению, нет универсальной формулы, подходящей для их подсчета. Обычно пользуются одной из формул: формулой Стерджесса (k = 1 + 3.322lgn), Брукса и Каррузера (k = 5lgn), Хайнхольда и Гаеде , Райса ( 3 2 k n = ) и др. Если пред( ) k n = полагается приблизительно нормальное распределение данных, ши3.49 , s h = рину интервала иногда вычисляют по правилу Скотта ( 3 n где s – оценка стандартного отклонения). Для выбора ширины интер( ) 2 , IQR x h = вала можно использовать правило Фридмана–Диакониса ( 3 n где IQR(x) – межквартильный размах). В данном пособии для подсчета количества интервалов будет использоваться формула Стерджесса. Будет показано, как построить гистограмму в одной из библиотек: Matplotlib, Seaborn, Plotly и Altair. Для работы с библиотекой для построения гистограмм, kde- и ecdf- функции она должна быть установлена на компьютер. Некоторые среды разработки Python, такие как, например, Google Colab, уже включают в себя различные библиотеки, в том числе NymPy, Matplotlib, Seaborn, Plotly, Altair. Их устанавливать не надо, а следует только импортировать. Проверить, установлена ли данная библиотека (модуль), можно, набрав в командной строке pip freeze. Установить библиотеку можно с помощью пайтоновского менеджера установки пакетов: pip install имя_библиотеки. 1 . 1 . П о с т р о е н и е г и с т о г р а м м в б и б л и о т е к е M a t p l o t l i b Matplotlib – это библиотека для визуализации данных, написанная Джоном Хантером на языке Python и являющаяся, пожалуй, одной из самых популярных. Изначально распространялась под BSD (Berkeley 10