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

3. Изучение набора данных вашего варианта:

3.1. Оцените и опишите набор данных вашего варианта с использованием методов, рассмотренных ранее. Сделайте выводы о кол-во классов, наличию выбросов, пересечении классов, и т.Д.

Для начала загрузим данные из файла в датафрейм и уберем лишний первый столбец. Далее заменим метки классов: 0 – Iris-setosa, 1 – Iris-versicolor, 2 – Iris-virginica, и выведем основные статистические характеристики. Реализация приведена в Листинге 3.1.1. Результат представлен в Листинге 3.1.2.

Листинг 3.1.1 – Загрузка датасета и вывод характеристик.

df = pd.read_csv("lab1_var1.csv", index_col=0)

df["label"] = df["label"].replace([0, 1, 2], ["Iris-setosa", "Iris-versicolor", "Iris-virginica"])

print(df.describe())

Листинг 3.1.2 – Статистические характеристики датасета.

var1

var2

var3

var4

label

count

200.000000

200.000000

200.000000

200.000000

200.000000

mean

0.116475

-0.110263

-0.167975

0.035150

0.995000

std

2.725473

2.707951

3.729149

2.649211

0.817506

min

-5.467196

-4.597760

-7.753001

-4.694267

0.000000

25%

-2.523431

-2.785206

-3.393294

-2.346640

0.000000

50%

0.338841

-0.496754

0.429499

0.124045

1.000000

75%

2.689858

2.513700

2.989684

2.504390

2.000000

max

4.439297

5.207049

7.338198

4.814143

2.000000

Реализация построения графиков оценки ядерной плотности, диаграмм рассеивания и двумерной оценки ядерной плотности каждого признака представлена в Листинге 3.1.3. Результаты приведены на Рисунке 3.1.4.

Листинг 3.1.3 – Реализация построения графиков оценки ядерной плотности, диаграмм рассеивания и двумерной оценки ядерной плотности каждого признака.

g = sns.PairGrid(df, hue="label", palette="tab10", diag_sharey=False)

g.map_upper(sns.scatterplot)

g.map_lower(sns.kdeplot)

g.map_diag(sns.kdeplot)

g.add_legend()

plt.show()

Рисунок 3.1.4 – Графики оценки ядерной плотности, диаграммы рассеивания и двумерной оценки ядерной плотности каждого признака

На графиках видно, что iris-setosa четко отделяется от остальных классов по переменным var2 и var3. В диаграммах рассеяния можно наблюдать, как его точки образуют отдельные кластеры. Ядерная оценка плотности также подтверждает, что распределение этого класса не пересекается с другими. Iris-versicolor и iris-virginica, напротив, имеют значительное перекрытие, особенно по переменным var1 и var4. Это хорошо заметно на диаграммах рассеяния, где их точки накладываются друг на друга. Контурные линии KDE подтверждают частичное пересечение этих двух классов, что может затруднить их классификацию. В некоторых распределениях можно увидеть точки, значительно удаленные от основной массы данных, что может указывать на наличие выбросов. Например, по переменным var3 и var4 видно, что некоторые точки выходят за пределы основных плотностей распределений, особенно у iris-virginica. Также между некоторыми переменными наблюдается линейная зависимость, например, между var1 и var3. В проекциях классы располагаются вдоль диагональных линий, что указывает на возможные корреляции между переменными.

Построение гистограмм распределения для каждого признака с графиком ядерной оценки плотности представлено в Листинге 3.1.5. Результат приведен на Рисунке 3.1.6.

Листинг 3.1.5 – Реализация построения гистограмм распределения для каждого признака с графиком ядерной оценки плотности.

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='label', bins=15, multiple='layer', element='step', ax=ax, kde=True)

fig.suptitle(f'Распределение признаков с графиком ядерной оценки плотности')

plt.tight_layout()

plt.show()

Рисунок 3.1.6 – Гистограммы распределения для каждого признака с графиком ядерной оценки плотности

По гистограмме можно сказать, что iris-setosa четко отделяется, тогда как iris-versicolor и iris-virginica частично пересекаются, что усложняет их классификацию. Var3 наиболее информативен, так как лучше всего разделяет классы, тогда как var4 имеет значительное перекрытие и может быть менее полезен. В некоторых признаках, особенно в var3, видно два пика в распределении и возможные выбросы.

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