Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы по ОМО 2025 / Baraeva_Elizaveta_lb1.doc
Скачиваний:
1
Добавлен:
09.09.2026
Размер:
2 Мб
Скачать
☆

1.6.1. Постройте гистограммы для разного количества столбцов: 5,10,15,20,30. Выберите на ваш взгляд такое количество столбцов, который лучшие образом описывает форму распределения признаков.

Для выбора количества столбцов возьмем, например, столбец 'sepal length (cm)'. Сначала задаётся список, содержащий значения количества столбцов. Затем создаётся график с пятью подграфиками в один ряд. В цикле строятся гистограммы для столбца 'sepal length (cm)' с разным количеством столбцов. Гистограммы оформляются с чёрными границами столбцов, а также получают заголовки, указывающие количество столбцов, подписи осей X и Y. В конце вызывается plt.tight_layout(), чтобы корректно разместить графики, а затем plt.show() отображает результат. Реализация приведена в Листинге 1.6.1.1. График гистограммы представлен на Рисунке 1.6.1.2.

Листинг 1.6.1.1 – Реализация рисования гистограммы распределения с разным количеством столбцов

bins_list = [5, 10, 15, 20, 30]

fig, axs = plt.subplots(1, 5, figsize=(20, 5))

for i in range(5):

axs[i].hist(df['sepal length (cm)'], bins=bins_list[i], edgecolor='black')

axs[i].set_title(f'bins={bins_list[i]}')

axs[i].set_xlabel('sepal length (cm)')

axs[i].set_ylabel('Count')

plt.tight_layout()

plt.show()

Рисунок 1.6.1.2 – Гистограммы распределения с разным количеством столбцов

Как мне кажется, оптимальное количество столбцов – 10, поскольку при таком разбиении гистограмма сохраняет информативность и не теряет важные особенности распределения.

  1. Сделайте на каждой гистограмме разделение по цвету согласно классу. Проведите это в двух режимах, когда гистограммы накладываются/суммируются и когда пересекаются. Далее используйте режим с пересечением.

Сначала создаётся график с четырьмя подграфиками в один ряд. Затем для каждого признака строится гистограмма с помощью sns.histplot, где hue – название столбца для группировки данных по цвету, bins – количество столбцов, multiple – режим гистограммы, в данном случае режим наложения. Каждая гистограмма получает заголовок. После цикла вызывается plt.tight_layout(), чтобы корректно разместить графики, а затем plt.show() отображает результат. Реализация приведена в Листинге 1.6.2.1. График гистограммы представлен на Рисунке 1.6.2.2.

Листинг 1.6.2.1 – Реализация рисования гистограммы распределения в режиме наложения

fig, axes = plt.subplots(1, 4, figsize=(20, 5))

for ax, column in zip(axes, df.columns[:-1]):

sns.histplot(data=df, x=column, hue='target', bins=10, multiple='stack', ax=ax)

fig.suptitle(f'Режим наложения')

plt.tight_layout()

plt.show()

Рисунок 1.6.2.2 – Гистограммы распределения в режиме наложения

Для режима пересечения зададим параметр multiple='layer'. График гистограммы представлен на Рисунке 1.6.2.3.

Рисунок 1.6.2.3 – Гистограммы распределения в режиме пересечения

1.7. Постройте гистограммы, чтобы вместо столбцов изображались ступеньки.

Для построения гистограммы в виде ступенек используем element='step'. Реализация приведена в Листинге 1.7.1. График гистограммы представлен на Рисунке 1.7.2.

Листинг 1.7.1 – Реализация рисования гистограммы распределения ступеньками

fig, axes = plt.subplots(1, 4, figsize=(20, 5))

for ax, column in zip(axes, df.columns[:-1]):

sns.histplot(data=df, x=column, hue='target', bins=10, multiple='layer', element='step', ax=ax)

fig.suptitle(f'Режим пересечения')

plt.tight_layout()

plt.show()

Рисунок 1.7.2 – Гистограммы распределения ступеньками

Соседние файлы в папке Лабы по ОМО 2025