IIS_2023_1/shadaev_anton_lab_4/main.py

32 lines
1.5 KiB
Python
Raw Normal View History

2023-11-04 19:10:52 +04:00
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()