Merge pull request 'senkin_alexander_lab_4 is ready' (#112) from senkin_alexander_lab_4 into main

Reviewed-on: http://student.git.athene.tech/Alexey/IIS_2023_1/pulls/112
This commit is contained in:
Alexey 2023-11-06 21:20:46 +04:00
commit d4dbce9b09
5 changed files with 67618 additions and 0 deletions

1
senkin_alexander_lab_4/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.idea/

View File

@ -0,0 +1,31 @@
Лабораторная №4
Вариант №4
Задание на лабораторную:
Использовать метод кластеризации DBSCAN, самостоятельно сформулировав задачу. Интерпретировать результаты и оценить, насколько хорошо он подходит для решения сформулированной задачи. Было решено делать кластеризацию по летальныи исходам и магнитуде торнадо.
Как запустить лабораторную работу:
Чтобы увидеть работу программы, нужно запустить исполняемый питон файл senkin_alexander_lab_4.py, после чего будет отрисован график, по которому можно сделать выводы.
Библиотеки:
Sklearn. Предоставляет инструменты и алгоритмы, которые упрощают задачи, связанные с машинным обучением.
Matplotlib - это библиотека для создания графиков и визуализации данных. Она используется для отображения данных на графиках.
Описание программы:
- Загружаем данные из csv файла
- Выбираем количество данных для обработки, например 10000
- Выделяем признаки, по которым будем проводить кластеризацию (fat - фатальные исходы, mag - магнитуды)
- Применяем кластеризацию
- Рисуем график
Программа рисует следующий график:
![img.png](img.png)
Смотря на график можно сделать вывод, что среди 10000 записей о происходящих торнадо, большинство приходятся на 4 магнитуду с чуть больше 0 летальных исходов, а торнадо с амплитудой 5 имеет только шумовые точки. Также мы видим много шума - фиолетовых точек, что говорит нам о том, что алгоритм не очень эффективен для решаемой задачи.

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View File

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

File diff suppressed because it is too large Load Diff