#python #pythonprogramming #cluster #kmeans #пайтон #програмування
Розбираємо кластерний аналіз на Python за допомогою метода k-середніх
код
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
1. Завантаження даних
Переконайтеся, що файл mines_data.xlsx лежить у тій же папці
df = pd.read_excel('mines_data.xlsx')
2. Вибір параметрів для аналізу
Наприклад, візьмемо 'Зольність' та 'Собі-сть' (Собівартість)
Ви можете змінити назви колонок на будь-які інші з вашої таблиці
features = ['', 'Собів-сть']
X = df[features].values
3. Масштабування даних
Це обов'язково, оскільки Собівартість (тисячі) та Зольність (десятки) мають різні масштаби
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
4. Кластеризація (використовуємо 3 кластери згідно з вашим графіком ліктя)
kmeans = KMeans(n_clusters=3, init='k-means++', random_state=42)
df['Cluster'] = kmeans.fit_predict(X_scaled)
5. Візуалізація результатів
plt.figure(figsize=(12, 7))
Будуємо точки шахт, розфарбовані за кластерами
sns.scatterplot(
data=df,
x=features[0],
y=features[1],
hue='Cluster',
palette='viridis',
s=100,
style='Cluster'
)
Додаємо підписи назв шахт до точок
for i in range(df.shape[0]):
plt.text(
df[features[0]][i] + 0.5,
df[features[1]][i] + 0.5,
df['Шахта'][i],
fontsize=9,
alpha=0.7
)
Повертаємо центроїди у вихідний масштаб для коректного відображення на графіку
centroids_original = scaler.inverse_transform(kmeans.cluster_centers_)
plt.scatter(
centroids_original[:, 0],
centroids_original[:, 1],
s=300, c='red', marker='X', label='Центроїди'
)
plt.title('Кластерний аналіз вугільних шахт (Мех vs Собівартість)', fontsize=14)
plt.xlabel(features[0] + ' (%)')
plt.ylabel(features[1] + ' (грн/т)')
plt.legend()
plt.grid(True, linestyle='--', alpha=0.6)
plt.show()
Вивід результатів у консоль
print("Результати розподілу шахт за кластерами:")
print(df[['Шахта', 'Cluster']].sort_values(by='Cluster'))
Друзі, щиро дякую за увагу до нашого спільного ресурсу.
Саме завдяки Вам існує канал.
Саме Ви підтримуєте і створюєте можливості для розвитку.
Як можна підтримати канал👇
1⃣Доєднатись до нашої закритої спільноти та отримати можливості та ранній доступ до всіх відео та курсів https://patreon.com/u90090409?utm_med...
Запис на консультацію та співпраця andreykh918@gmail.com
З питань реклами khorolskiyaa@ukr.net
Наша спільнота в Телеграм https://t.me/prosto_prostishe
2⃣Також будемо вдячні за підписку та фінансову підтримку каналу.
Канал можна підтримати будь-яким зручним способом. Деталі https://donatello.to/Day_book_2025
3⃣разово підтримати наш канал - завдяки цьому Ви робите вклад в розвиток україномовного наукового і освітнього контенту.
👉(UAH) Рахунок Приват (гривня) 5168745032870658
Информация по комментариям в разработке