Merge pull request 'gusev_vladislav_lab_4 is ready' (#63) from gusev_vladislav_lab_4 into main

Reviewed-on: http://student.git.athene.tech/Alexey/IIS_2023_1/pulls/63
This commit is contained in:
Alexey 2023-10-28 12:09:45 +04:00
commit 994129b8a9
4 changed files with 53989 additions and 0 deletions

View File

@ -0,0 +1,20 @@
### Вариант 9
### Задание на лабораторную работу:
Использовать метод кластеризации DBSCAN, самостоятельно сформулировав задачу. Интерпретировать результаты и оценить, насколько хорошо он подходит для решения сформулированной задачи.
### Как запустить лабораторную работу:
Выполняем файл gusev_vladislav_lab_1.py, на экране будет нарисовано 3 графика
### Технологии
Pandas - библиотека для анализа данных. Она предоставляет структуры данных и функции для работы с табличными данными. Mathplotlib - библиотека для визуализации данных двумерной и трехмерной графикой. Sklearn - библиотека с большим количеством алгоритмов машинного обучения.
### По коду
1) Загружаем данные из csv файла
2) Выбираем 10000 данных (потому что при сильном увеличении данных метод DBSCAN сильно загружает систему и программа начинает виснуть)
3) Создаем модель DBSCAN, предварительно выбрав нужные данные
4) Применяем DBSCAN к данным и создаём график
Что получаем:
![img.png](img.png)
### Вывод
- По данному графику можно сказать, что в основном глубина алмазов розница от ~57-~66, а карат в районе 1 (0.6-1.4)
- В целом на графике видно очень много шума (фиолетовые точки), но также немало более светлых - близких к красным. Визуально можно сказать, что эффективность этого метода 30%-40%.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,25 @@
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import DBSCAN
# Загрузка данных из csv-файла
data = pd.read_csv('diamonds_prices.csv', index_col='diamond_id')
# Выбираем 10000 данных ()
data_subset = data.head(10000)
# Выделяем признаки (карат и глубина)
features = data_subset[['carat', 'depth']]
# Создание модели DBSCAN
dbscan = DBSCAN(eps=0.1, min_samples=5)
# Применение DBSCAN к данным
data_subset['cluster'] = dbscan.fit_predict(features)
# Создание графика для визуализации кластеров
plt.scatter(data_subset['carat'], data_subset['depth'], c=data_subset['cluster'], cmap='rainbow')
plt.xlabel('Карат (carat)')
plt.ylabel('Глубина (depth)')
plt.title('Кластеризация данных о карате и глубине алмазов')
plt.show()

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB