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

1.8. Добавьте на гистограммы график ядерной оценки плотности.

Для добавления на гистограммы графика ядерной оценки плотности используем kde=True. Реализация представлена в Листинге 1.8.1. Результат представлен на Рисунке 1.8.2.

Листинг 1.8.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, kde=True)

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

plt.tight_layout()

plt.show()

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

2. Изучение набора данных iris.Csv с использованием NumPy:

2.1. Загрузите данные из файла как массив NumPy

Для загрузки данных используем функцию numpy.genfromtxt. Она загружает данные из файла, разделяя их запятыми. skip_header=1 – пропускает первую строку, если в файле есть заголовки. Реализация представлена в Листинге 2.1.1.

Листинг 2.1.1 – Загрузка данных из файла как массив NumPy

import numpy as np

data = np.genfromtxt("iris.csv", delimiter=",", skip_header=1)

2.2. Выведите первые 10 наблюдений набора данных.

Для вывода первых 10 наблюдений используем срез. Реализация представлена в Листинге 2.2.1. Результат приведен в Листинге 2.2.2.

Листинг 2.2.1 – Вывод первых десяти записей датасета

print(data[:10])

Листинг 2.2.2 – Первые десять записей датасета

[[0. 5.1 3.5 1.4 0.2 0. ]

[1. 4.9 3. 1.4 0.2 0. ]

[2. 4.7 3.2 1.3 0.2 0. ]

[3. 4.6 3.1 1.5 0.2 0. ]

[4. 5. 3.6 1.4 0.2 0. ]

[5. 5.4 3.9 1.7 0.4 0. ]

[6. 4.6 3.4 1.4 0.3 0. ]

[7. 5. 3.4 1.5 0.2 0. ]

[8. 4.4 2.9 1.4 0.2 0. ]

[9. 4.9 3.1 1.5 0.1 0. ]]

2.3. Рассчитайте характеристики, полученные методом describe в п. 1.3 с использованием методов NumPy. Обращайте внимание на то, где оценка смещенная, а где нет.

Для расчета характеристик используются методы: shape[0], который определяет количество наблюдений; mean, который рассчитывает среднее значение по каждому признаку; std, который рассчитывает стандартное отклонение с несмещённой оценкой (ddof=1); min и max, которые рассчитывают минимальное и максимальное значения; percentile, который вычисляет квартили (25%, 50%, 75%). Реализация приведена в Листинге 2.3.1. Результат представлен в Листинге 2.3.2.

Листинг 2.3.1 – Расчет характеристик датасета.

count = data.shape[0]

mean = np.mean(data, axis=0)

std = np.std(data, axis=0, ddof=1)

min_val = np.min(data, axis=0)

percentiles_25 = np.percentile(data, 25, axis=0)

percentiles_50 = np.percentile(data, 50, axis=0)

percentiles_75 = np.percentile(data, 75, axis=0)

max_val = np.max(data, axis=0)

print('sepal length (cm), sepal width (cm), petal length (cm), petal width (cm)')

print(f"count: {count}")

print(f"mean: {mean}")

print(f"std: {std}")

print(f"min: {min_val}")

print(f"25%: {percentiles_25}")

print(f"50%: {percentiles_50}")

print(f"75%: {percentiles_75}")

print(f"max: {max_val}")

Листинг 2.3.2 – Результат расчета характеристик датасета.

sepal length (cm), sepal width (cm), petal length (cm), petal width (cm)

count: 150

mean: [74.5 5.84333333 3.05733333 3.758 1.19933333 1. ]

std: [43.44536799 0.82806613 0.43586628 1.76529823 0.76223767 0.81923192]

min: [0. 4.3 2. 1. 0.1 0. ]

25%: [37.25 5.1 2.8 1.6 0.3 0. ]

50%: [74.5 5.8 3. 4.35 1.3 1. ]

75%: [111.75 6.4 3.3 5.1 1.8 2. ]

max: [149. 7.9 4.4 6.9 2.5 2. ]

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