32 lines
1.5 KiB
Python
32 lines
1.5 KiB
Python
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()
|