arzamaskina_milana_lab_4 is ready

This commit is contained in:
Арзамаскина Милана 2023-12-02 17:02:45 +04:00
parent a8c58683dd
commit eb6c303793
5 changed files with 63261 additions and 0 deletions

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,112 @@
# Лабораторная работа №3
## Кластеризация
#### ПИбд-41 Арзамаскина Милана
#### Вариант №2 (2 % 5 = 2)
## Задание:
Использовать метод кластеризации по варианту для данных из таблицы 1 по варианту (таблица 9),
самостоятельно сформулировав задачу.
Интерпретировать результаты и оценить, насколько хорошо он подходит для решения сформулированной вами задачи.
#### Формулировка задачи:
Группировка стран на основе их характеристик:
количество выбросов от добычи нефтепродуктов, газа, угля в 2020 году.
С помощью алгоритма кластеризации: linkage.
## Данные:
Этот набор данных обеспечивает углубленный анализ глобальных выбросов CO2 на уровне страны, позволяя лучше понять,
какой вклад каждая страна вносит в глобальное совокупное воздействие человека на климат.
Он содержит информацию об общих выбросах, а также от добычи и сжигания угля, нефти, газа, цемента и других источников.
Данные также дают разбивку выбросов CO2 на душу населения по странам, показывая,
какие страны лидируют по уровням загрязнения, и определяют потенциальные области,
где следует сосредоточить усилия по сокращению выбросов.
Этот набор данных необходим всем, кто хочет получить информацию о своем воздействии на окружающую среду
или провести исследование тенденций международного развития.
Данные организованы с использованием следующих столбцов:
+ Country: название страны
+ ISO 3166-1 alpha-3: трехбуквенный код страны
+ Year: год данных исследования
+ Total: общее количество CO2, выброшенный страной в этом году
+ Coal: количество CO2, выброшенное углем в этом году
+ Oil: количество выбросов нефти
+ Gas: количество выбросов газа
+ Cement: количество выбросов цемента
+ Flaring: сжигание на факелах уровни выбросов
+ Other: другие формы, такие как промышленные процессы
+ Per Capita: столбец «на душу населения»
### Какие технологии использовались:
Используемые библиотеки:
* scipy.cluster.hierarchy
* pandas
* matplotlib
* seaborn
### Как запустить:
* установить python, scipy.cluster.hierarchy, pandas, matplotlib, seaborn
* запустить проект (стартовая точка - main.py)
### Что делает программа:
* Загружает набор данных из файла 'CO2.csv', который содержит информацию о выбросах странами CO2 в год от различной промышленной деятельности.
* Очищает набор данных путём удаления строк с нулевыми значениями и глобальными значениями по всем странам (строки 'Global') из набора.
* Отбирает данные по странам за 2020 год.
* Выбирает набор признаков (features) из данных, которые будут использоваться для кластеризации.
* Применяет алгоритм linkage.
* Формирует 4 кластера данных с помощью функции fcluster.
* Выводит таблицу со списком стран, их характеристиками и номером кластера, к которому они относятся.
* Отображает диаграмму результатов кластеризации seaborn.
#### Результаты работы программы:
![Result](img_1.png)
![Result](img.png)
### Вывод:
Для кластеризации данных было использовано 4 кластера для группировки стран на основе их характеристик:
количество выбросов от добычи нефтепродуктов, газа, угля в 2020 году.
На кластеры разбивались 47 стран.
На диаграмме можно наблюдать, что практически все страны относятся к первому кластеру,
а 2, 3, 4 кластер содержит всего по одной стране.
+ Кластер 1:
Включает страны с маленьким объёмом выбросов от добычи газа, нефти и угля в 2020 году.
В данную группу входят такие страны, как Швейцария, Турция, Норвегия и др.
Опираясь на результаты кластеризации, можно сказать, что страны имеют малое количество месторождений газа, нефти и угля,
либо не занимаются их добычей, либо ведут мероприятия по смягчению последствий от загрязнений.
+ Кластер 2:
Включает одну страну - Россию.
По диаграмме можно сказать, что в стране выбросы от добычи нефти и угля также малы, как и в странах первого кластера.
Однако, выбросы от добычи газа в несколько раз больше.
Страна, которая занимается преимущественно добычей газа.
+ Кластер 3:
Содержит также одну страну - США. У страны рекордный объём выбросов от добычи газа, также страна этого кластера
отличается бОльшим объемом выбросов от добычи нефти (можно наблюдать на диаграмме по размеру точки).
Страна, лидирующая по объёму выбросов от добычи газа. Страна является лидером по запасам природного газа.
+ Кластер 4:
Включает страну - Китай. Судя по диаграмме кластеризации Китай производит большой объём выбросов
в процессе добычи нефти и рекордный в процессе добычи угля.
Страна, лидирующая по выбросам от добычи угля и нефти, а также средняя по выбросам от газа.
Опираясь на результаты кластеризации, можно сказать, что Китай - лидер по добыче угля.
Данная кластеризация на 4 кластера хорошо подходит для распределения стран
на группы по объёму выбросов от добычи нефти, газа и угля.

Binary file not shown.

After

Width:  |  Height:  |  Size: 602 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

View File

@ -0,0 +1,44 @@
import pandas as pd
from scipy.cluster.hierarchy import linkage, fcluster
import matplotlib.pyplot as plt
import seaborn as sns
# Кластеризация: Группировка стран на основе их характеристик:
# количество выбросов от добычи нефтепродуктов, газа, угля в 2020 году.
# Загружаем данные, отбираем данные за 2020 год
# и удаляем строки, в которых данные отсутствуют
data_first = pd.read_csv('CO2.csv')
data_first = data_first.dropna()
data = data_first[data_first['Year'] == 2020]
data = data[data.Country != 'Global']
names = data['Country']
# Выделение признаков
features = data[['Coal', 'Oil', 'Gas']]
# Применение алгоритма linkage
link_cl = linkage(features, method='ward', metric='euclidean')
# Кластеризация на 3 кластера
clusters = fcluster(link_cl, 4, criterion='maxclust')
# Добавление информации о кластерах в исходные данные
features['cluster'] = clusters
# Диаграмма результатов кластеризации
plt.figure(figsize=(12, 6))
sns.scatterplot(x='Coal', y='Gas', size='Oil',
sizes=(10, 200), hue='cluster', palette='viridis', data=features)
plt.title('Clustering Results')
plt.xlabel('Coal')
plt.ylabel('Gas')
# Вывод таблицы с результатами кластеризации
# Добавление наименований стран
features.insert(loc=0, column='country', value=names)
# Вывод результатов кластеризации
result_clust = features[['cluster', 'country', 'Coal', 'Oil', 'Gas']]
print(result_clust)
plt.show()