45 lines
1.8 KiB
Python
45 lines
1.8 KiB
Python
|
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()
|