From b967af636c555b5f3e4448b0ae11f47b9612a222 Mon Sep 17 00:00:00 2001 From: Arutunyan-Dmitry Date: Mon, 16 Oct 2023 01:19:01 +0400 Subject: [PATCH] arutunyan_dmitry_lab_4 is ready --- arutunyan_dmitry_lab_4/README.md | 131 +++++++++++++++++++++++++++ arutunyan_dmitry_lab_4/dbscan.png | Bin 0 -> 48562 bytes arutunyan_dmitry_lab_4/main.py | 96 ++++++++++++++++++++ arutunyan_dmitry_lab_4/reg.png | Bin 0 -> 51426 bytes arutunyan_dmitry_lab_4/regdbscan.png | Bin 0 -> 47344 bytes 5 files changed, 227 insertions(+) create mode 100644 arutunyan_dmitry_lab_4/README.md create mode 100644 arutunyan_dmitry_lab_4/dbscan.png create mode 100644 arutunyan_dmitry_lab_4/main.py create mode 100644 arutunyan_dmitry_lab_4/reg.png create mode 100644 arutunyan_dmitry_lab_4/regdbscan.png diff --git a/arutunyan_dmitry_lab_4/README.md b/arutunyan_dmitry_lab_4/README.md new file mode 100644 index 0000000..6eb14e9 --- /dev/null +++ b/arutunyan_dmitry_lab_4/README.md @@ -0,0 +1,131 @@ + +## Лабораторная работа 4. Вариант 4. +### Задание +Использовать метод кластеризации по варианту для данных из курсовой работы. Самостоятельно сформулировав задачу. Интерпретировать результаты и оценить, насколько хорошо он подходит для +решения сформулированной задачи. + +Алгоритм кластеризации: + +- Пространственная кластеризация данных с шумом на основе плотности `DBSCAN`. + +### Как запустить +Для запуска программы необходимо с помощью командной строки в корневой директории файлов прокета прописать: +``` +python main.py +``` +После этого в папке `static` сгенерируются 3 графика, по которым оценивается результат выполнения программы. + +### Используемые технологии +- Библиотека `numpy`, используемая для обработки массивов данных и вычислений +- Библиотека `pyplot`, используемая для построения графиков. +- Библиотека `pandas`, используемая для работы с данными для анализа scv формата. +- Библиотека `sklearn` - большой набор функционала для анализа данных. Из неё были использованы инструменты: + - `DBSCAN` - инструмент работы с моделью "Пространственная кластеризация данных с шумом на основе плотности" + - `metrics` - набор инструменов для оценки моделей + - `LinearRegression` - инструмент работы с моделью "Линейная регрессия" + +`DBSCAN` - это алгоритм кластеризации, который используется для кластеризации данных на основе плотности, что позволяет обнаруживать кластеры произвольной формы и обнаруживать выбросы (шум). `DBSCAN` может быть полезным при предварительной обработке данных перед задачей предсказания: + - Удаление выбросов (шума): `DBSCAN` может помочь в идентификации и удалении выбросов из данных. + - Генерация новых признаков: `DBSCAN` может быть использован для генерации новых признаков на основе кластеров. + +### Описание работы +#### Описание набора данных +Набор данных - набор для определения возможности наличия ССЗ заболеваний у челоека + +Названия столбцов набора данных и их описание: + + * HeartDisease - Имеет ли человек ССЗ (No / Yes), + * BMI - Индекс массы тела человека (float), + * Smoking - Выкурил ли человек хотя бы 5 пачек сигарет за всю жизнь (No / Yes), + * AlcoholDrinking - Сильно ли человек употребляет алкоголь (No / Yes), + * Stroke - Был ли у человека инсульт (No / Yes), + * PhysicalHealth - Сколько дней за последний месяц человек чувствовал себя плохо (0-30), + * MentalHealth - Сколько дней за последний месяц человек чувствовал себя удручённо (0-30), + * DiffWalking - Ииспытывает ли человек трудности при ходьбе (No / Yes), + * Sex - Пол (female, male), + * AgeCategory - Возрастная категория (18-24, 25-29, 30-34, 35-39, 40-44, 45-49, 50-54, 55-59, 60-64, 65-69, 70-74, 75-79, 80 or older), + * Race - Национальная принадлежность человека (White, Black, Hispanic, American Indian/Alaskan Native, Asian, Other), + * Diabetic - Был ли у человека диабет (No / Yes), + * PhysicalActivity - Занимался ли человек спротом за последний месяц (No / Yes), + * GenHealth - Общее самочувствие человека (Excellent, Very good, Good, Fair, Poor), + * SleepTime - Сколько человек в среднем спит за 24 часа (0-24), + * Asthma - Была ли у человека астма (No / Yes), + * KidneyDisease - Было ли у человека заболевание почек (No / Yes), + * SkinCancer - Был ли у человека рак кожи (No / Yes). + +Ссылка на страницу набора на kuggle: [Indicators of Heart Disease](https://www.kaggle.com/datasets/kamilpytlak/personal-key-indicators-of-heart-disease/data) + +#### Формулировка задачи +Согласно прописанным в литературе варантам использования, `DBSCAN` может помочь в идентификации и удалении выбросов из данных, а также может быть использован для генерации новых признаков на основе кластеров. Исходя из этого сформулируем задачу: +> "В наборе данных с помощью `DBSCAN` определить и исключить строки содержащие шум, а также сгенерировать новый признак для данных на сонове кластеров. Проверить результат через решение задачи предсказания моделью линейной регрессии на исходных и модифицированных данных" + +#### Использование алгоритма `DBSCAN` +Чтобы эффективно использовать алгоритм `DBSCAN` необходимо правильно определить два параметра: `eps` - радиус окрестности вокруг каждой точки и `min_samples` - минимальное количество точек, которые должны находиться в окрестности, чтобы рассматривать ее как ядро кластера. + +Начнём с получения датасета из csv файла и признаков кластеризации: +```python +df = pd.read_csv(filein, sep=',').iloc[0:10000] +x = df.drop("HeartDisease", axis=1) +``` +> **Warning** +> +> Алгоритм `DBSCAN` - очень жадная по памяти программа. В худшем случае алгоритм может занимать Q(N^2) оперативной памяти устройства, поэтому исследование получится провести лишь на частичной выборке в 10000 строк данных. + +Для нахождения оптимального значения параметра `eps` воспользуемся методом рассчёта средней плотности данных. Для этого необходимо найти суммы максимальных и минимальных значений каждого признака и взять среднее арифметическое этих двух значений: + +```python +eps_opt = (x.max().values.mean() + x.min().values.mean()) / 2 +``` +Оптимальное значение параметра `min_samples` будем искать эмпирически. Условимся, что нам будет достаточно разделить высе данные на 6 кластеров (пусть это будут степени риска возникновения ССЗ), но нам нельзя терять в качестве выбросов более 10% данных. Тогда мы будем варьировать параметр `min_samples` от 1 до кол-ва всех данных и закончим эксперимент при выполнении одного из указанных условий: + +```python +developed_data = [] + for i in range(len(x)): + if i == 0: + continue + dbscan = DBSCAN(eps=eps_opt, min_samples=i) + clusters = dbscan.fit_predict(x.values) + if len(set(clusters)) <= 7: + developed_data = clusters + break + if list(clusters).count(-1) / len(clusters) >= 0.1: + developed_data = clusters + break +``` + +Таким образом в массиве `developed_data` мы получим значение кластеров для каждй строки датасета. Добавим её как дополнительный признак. + +График кластеров для значений датасета: + +![](dbscan.png "") + +#### Решение задачи предсказания +Создадим два обучающих модуля. В 1м удалим все строки с кластером `-1`, что указывает на то, что они шум и воспользуемся дополнительным признаком `DBSCAN`: +```python +df_mod = df.loc[df["DBSCAN"] != -1] +x_train_mod = df_mod.drop("HeartDisease", axis=1).iloc[0:round(len(df) / 100 * 99)] +y_train_mod = df_mod["HeartDisease"].iloc[0:round(len(df) / 100 * 99)] +x_test_mod = df_mod.drop("HeartDisease", axis=1).iloc[round(len(df) / 100 * 99):len(df)] +y_test_mod = df_mod["HeartDisease"].iloc[round(len(df) / 100 * 99):len(df)] +``` +Во 2м модуле для разделения на выборки оставим исходные данные: +```python +x_train = df.drop(["HeartDisease", "DBSCAN"], axis=1).iloc[0:round(len(df) / 100 * 99)] +y_train = df["HeartDisease"].iloc[0:round(len(df) / 100 * 99)] +x_test = df.drop(["HeartDisease", "DBSCAN"], axis=1).iloc[round(len(df) / 100 * 99):len(df)] +y_test = df["HeartDisease"].iloc[round(len(df) / 100 * 99):len(df)] +``` +Создаим две модели регрессии и на каждой решим задачу предсказания. Вычислим ошибки и построим графики. + +График решения задачи предсказания на модифицированных данных: + +![](regdbscan.png "") + +График решения задачи предсказания на исходных данных: + +![](reg.png "") + +### Вывод +Согласно графиком, модель, обученная на исходных данных показала результат лучше, чем модель, обученная на модифицированных данных. Получается, что на данном наборе, используя алгоритм `DBSCAN`, мы не только невероятно увеличиваем затратность памяти на обучение модели, но и отрицательно влияем на результат её работы. Это означает, что использование алгоритма на таком наборе данных абсолютно нецелесообразно. + +Связанно это может быть с большим количеством бинарных признаков в данных. В таких случаях задачи кластеризации решаются сравнительно хуже. \ No newline at end of file diff --git a/arutunyan_dmitry_lab_4/dbscan.png b/arutunyan_dmitry_lab_4/dbscan.png new file mode 100644 index 0000000000000000000000000000000000000000..67dc36ed8197572b9aca6b1c36c1fa0c2825678d GIT binary patch literal 48562 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ðg*6 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 AsQ>@~ literal 0 HcmV?d00001 diff --git a/arutunyan_dmitry_lab_4/main.py b/arutunyan_dmitry_lab_4/main.py new file mode 100644 index 0000000..a3c2a30 --- /dev/null +++ b/arutunyan_dmitry_lab_4/main.py @@ -0,0 +1,96 @@ +import pandas as pd +import numpy as np +from matplotlib import pyplot as plt +from sklearn import metrics +from sklearn.cluster import DBSCAN +from sklearn.linear_model import LinearRegression + +filein = "P:\\ULSTU\\ИИС\\Datasets\\heart_2020_norm.csv" +fileout = "P:\\ULSTU\\ИИС\\Datasets\\heart_2020_classified.csv" + + +# Метод устранения шумов и кластеризации данных алгоритмом DBSCAN +def dbscan(): + df = pd.read_csv(filein, sep=',').iloc[0:10000] # Считывание датасета + x = df.drop("HeartDisease", axis=1) # Определение кластеризуемых параметров + + eps_opt = (x.max().values.mean() + x.min().values.mean()) / 2 # Рассчёт опционального радиуса окрестности методом средней плотности + + developed_data = [] # Подбор значения минимального количества точек в окрестности + for i in range(len(x)): # - Начинаем с одной точки + if i == 0: + continue # - Увеличиваем значение кол-ва точек на 1 + dbscan = DBSCAN(eps=eps_opt, min_samples=i) # - Обучаем модель и получаем массив кластеров + clusters = dbscan.fit_predict(x.values) + if len(set(clusters)) <= 7: # - Прекращаем увеличивать значение точек, если кол-во кластеров уменьшилось до требуемого + developed_data = clusters + break + if list(clusters).count(-1) / len(clusters) >= 0.1: # - Или если "шум" превышает 10% от данных + developed_data = clusters + break + + make_plot(x, developed_data) + df["DBSCAN"] = developed_data + df.to_csv(fileout, index=False) # Сохраняем полученные кластеры как доп. столбец датасета + + +# Метод оценки эффективности кластеризации DBSCAN +def linear_reg(): # Создаём две выборки данных + df = pd.read_csv(fileout, sep=',') # В 1й избавляемся от "шумов" и используем столбец кластеров как признак + df_mod = df.loc[df["DBSCAN"] != -1] + x_train_mod = df_mod.drop("HeartDisease", axis=1).iloc[0:round(len(df) / 100 * 99)] + y_train_mod = df_mod["HeartDisease"].iloc[0:round(len(df) / 100 * 99)] + x_test_mod = df_mod.drop("HeartDisease", axis=1).iloc[round(len(df) / 100 * 99):len(df)] + y_test_mod = df_mod["HeartDisease"].iloc[round(len(df) / 100 * 99):len(df)] + # Во 2й оставляем обычные данные + x_train = df.drop(["HeartDisease", "DBSCAN"], axis=1).iloc[0:round(len(df) / 100 * 99)] + y_train = df["HeartDisease"].iloc[0:round(len(df) / 100 * 99)] + x_test = df.drop(["HeartDisease", "DBSCAN"], axis=1).iloc[round(len(df) / 100 * 99):len(df)] + y_test = df["HeartDisease"].iloc[round(len(df) / 100 * 99):len(df)] + + lr_mod = LinearRegression() # Обучаем модель без "шума" и с признаком кластеров + lr_mod.fit(x_train_mod.values, y_train_mod.values) + y_mod_pred = lr_mod.predict(x_test_mod.values) + err = pred_errors(y_mod_pred, y_test_mod.values) + make_plots(y_test_mod.values, y_mod_pred, err[0], err[1], "Регрессия с кластеризацией dbscan") + + lr = LinearRegression() # Обучаем модель на исходных данных + lr.fit(x_train.values, y_train.values) + y_pred = lr.predict(x_test.values) + err = pred_errors(y_pred, y_test.values) + make_plots(y_test.values, y_pred, err[0], err[1], "Чистая линейная регрессия") + + +# Метод рассчёта ошибок +def pred_errors(y_predict, y_test): + mid_square = np.round(np.sqrt(metrics.mean_squared_error(y_test, y_predict)),3) # Рассчёт среднеквадратичной ошибки модели + det_kp = np.round(metrics.r2_score (y_test, y_predict), 2) # Рассчёт коэфициента детерминации модели + return mid_square, det_kp + + +# Метод отрисовки графиков +def make_plots(y_test, y_predict, mid_sqrt, det_kp, title): + plt.plot(y_test, c="red", label="\"y\" исходная") # Создание графика исходной функции + plt.plot(y_predict, c="green", label="\"y\" предсказанная \n" + "Ср^2 = " + str(mid_sqrt) + "\n" + "Кд = " + str(det_kp)) # Создание графика предсказанной функции + plt.legend(loc='lower left') + plt.title(title) + plt.savefig('static/' + title + '.png') + plt.close() + + +# Метод построения графика кластеризации +def make_plot(x, c): + plt.scatter(x.values[:, 0], x.values[:, 13], c=c, cmap='viridis') + plt.xlabel('BMI') + plt.ylabel('SleepTime') + plt.colorbar() + plt.title('DBSCAN Clustering') + plt.savefig('static/dbscan.png') + plt.close() + + +if __name__ == '__main__': + dbscan() + linear_reg() diff --git a/arutunyan_dmitry_lab_4/reg.png b/arutunyan_dmitry_lab_4/reg.png new file mode 100644 index 0000000000000000000000000000000000000000..774bf7e9edabd9bee7af137526886c321f9b3a81 GIT binary patch literal 51426 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

`Mi!E|v9B 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 literal 0 HcmV?d00001 diff --git a/arutunyan_dmitry_lab_4/regdbscan.png b/arutunyan_dmitry_lab_4/regdbscan.png new file mode 100644 index 0000000000000000000000000000000000000000..f35a14004489c1a84801e46edb4fe96bffa009d8 GIT binary patch literal 47344 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 literal 0 HcmV?d00001