shadaev_anton_lab_4 #130
33
shadaev_anton_lab_4/README.md
Normal file
33
shadaev_anton_lab_4/README.md
Normal file
@ -0,0 +1,33 @@
|
||||
# IIS_2023_1
|
||||
### Задание
|
||||
Использовать метод кластеризации по варианту для данных из таблицы 1 по варианту(таблица 9),самостоятельно сформулировав задачу. Интерпретировать результаты и оценить, насколько хорошо он подходит для решения сформулированной вами задачи.
|
||||
4. DBSCAN
|
||||
|
||||
### Способ запуска лабораторной работы
|
||||
Выполнить скрипт `shadaev_anton_lab_4/main.py`
|
||||
|
||||
### Стек технологий
|
||||
* `Python`: v. 3.11
|
||||
* `Pandas` - библиотека, которая позволяет работать с двумерными и многомерными таблицами, строить сводные таблицы, выделять колонки, использовать фильтры по параметрам, выполнять группировку по параметрам, запускать функции (сложение, нахождение медианы, среднего, минимального, максимального значений), объединять таблицы и многое другое
|
||||
* `Sklearn` - предоставляет ряд инструментов для моделирования данных, включая классификацию, регрессию, кластеризацию и уменьшение размерности.
|
||||
* `Matplotlib` - это библиотека для визуализации данных в Python, предоставляющая инструменты для создания статических, анимированных и интерактивных графиков и диаграмм.
|
||||
|
||||
### Описание кода
|
||||
1. Загрузка данных из .csv-файла.
|
||||
2. Предварительная обработка данных от null-значений.
|
||||
3. Отбор признаков.
|
||||
4. Нормализация признаков.
|
||||
5. Применение алгоритма DBScan.
|
||||
6. Визуализация данных.
|
||||
|
||||
График:
|
||||
|
||||
![myplot.png](myplot.png)
|
||||
|
||||
### Вывод
|
||||
Каждый цвет представляет собой отдельный кластер, и точки с одинаковым цветом принадлежат одному и тому же кластеру.
|
||||
* Средний уровень сахара в крови варьируется (примерно) от 140 до 250.
|
||||
Возраст варьируется (примерно) от 30 до 80.
|
||||
* На графике видно очень много фиолетовых точек, что говорит о том, что на нашем графике очень много шума. Но по другим точкам (более светлым) уже можем отобрать какие-то данные.
|
||||
|
||||
В целом, применение алгоритма DBScan к признакам (age, avg_glucose_level) из данного датасета не очень эффективно. Визуально можно оценить эффективность алгоритма на 5-10%. В моем случае этот алгоритм неэффективен, т.к. алгоритм лучше работает с данными с высокой плотностью, а разделить на группы среди признаков возраст и средний уровень сахара в крови может быть проблематично, т.к. получится выделить не так много характеристик среди групп с разным возрастом. По-сути все, что мы имеем, это низкий, средний, высокий уровень сахара в крови среди разных возрастных групп.
|
31
shadaev_anton_lab_4/main.py
Normal file
31
shadaev_anton_lab_4/main.py
Normal file
@ -0,0 +1,31 @@
|
||||
import pandas as pd
|
||||
import matplotlib.pyplot as plt
|
||||
from sklearn.cluster import DBSCAN
|
||||
from sklearn.preprocessing import StandardScaler
|
||||
|
||||
# Загрузка данных из .csv-файла
|
||||
data = pd.read_csv('stroke_prediction_ds.csv')
|
||||
|
||||
# В датасете встречаются null-значения, поэтому предварительно очистим датасет от них
|
||||
data = data.dropna()
|
||||
|
||||
# Выбор признаков (гипертензия и сердечные заболевания)
|
||||
features = data[['age', 'avg_glucose_level']]
|
||||
|
||||
# Нормализация признаков перед применением алгоритма DBScan, что позволит алгоритму работать быстрее и давать лучшие
|
||||
# результаты, так как данные будут приведены к одному виду на единой шкале
|
||||
scaler = StandardScaler()
|
||||
features = scaler.fit_transform(features)
|
||||
|
||||
# Создание экземпляра DBScan
|
||||
dbscan = DBSCAN(eps=0.1, min_samples=5)
|
||||
|
||||
# Применение алгорита DBScan к данным
|
||||
data['cluster'] = dbscan.fit_predict(features)
|
||||
|
||||
# Визуализация данных
|
||||
plt.scatter(data['age'], data['avg_glucose_level'], c=data['cluster'])
|
||||
plt.xlabel('Возраст')
|
||||
plt.ylabel('Средний уровень сахара в крови')
|
||||
plt.title('Кластеризация данных по возрасту и среднему уровню сахара в крови')
|
||||
plt.show()
|
BIN
shadaev_anton_lab_4/myplot.png
Normal file
BIN
shadaev_anton_lab_4/myplot.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 81 KiB |
5111
shadaev_anton_lab_4/stroke_prediction_ds.csv
Normal file
5111
shadaev_anton_lab_4/stroke_prediction_ds.csv
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user