52 lines
2.8 KiB
Python
52 lines
2.8 KiB
Python
|
# Использовать метод кластеризации по варианту для данных из таблицы 1 по варианту(таблица 9), самостоятельно
|
|||
|
# сформулировав задачу. Интерпретировать результаты и оценить, насколько хорошо он подходит для решения
|
|||
|
# сформулированной вами задачи.
|
|||
|
|
|||
|
# Кластеризация: Группировка домов на основе их характеристик, таких как широта, долгота, возраст дома,
|
|||
|
# общее количество комнат и т. д. Выделяем общие особенности или характеристики в различных районах.
|
|||
|
|
|||
|
# У меня второй вариант, остаток от деления номера варианта на 5 : 5/2=0 целых, остаток 2, берем второй вариант -
|
|||
|
# алгоритм кластеризации - linkage
|
|||
|
|
|||
|
import matplotlib.pyplot as plt
|
|||
|
import pandas as pd
|
|||
|
import seaborn as sns
|
|||
|
from scipy.cluster.hierarchy import linkage, fcluster
|
|||
|
from sklearn.preprocessing import StandardScaler
|
|||
|
|
|||
|
data = pd.read_csv('housing.csv')
|
|||
|
|
|||
|
# Выделение интересующих столбцов
|
|||
|
features = data[['housing_median_age', 'total_rooms', 'median_house_value']]
|
|||
|
|
|||
|
# Заполнение пропущенных значений медианой
|
|||
|
features = features.fillna(features.median())
|
|||
|
|
|||
|
# Стандартизация данных
|
|||
|
scaler = StandardScaler()
|
|||
|
scaled_features = scaler.fit_transform(features)
|
|||
|
|
|||
|
# Применение алгоритма linkage для кластеризации
|
|||
|
linkage_matrix = linkage(scaled_features, method='ward', metric='euclidean')
|
|||
|
|
|||
|
# Выбор оптимального числа кластеров и применение кластеризации
|
|||
|
num_clusters = 5 # Выберите желаемое количество кластеров
|
|||
|
clusters = fcluster(linkage_matrix, num_clusters, criterion='maxclust')
|
|||
|
|
|||
|
# Добавление информации о кластерах в исходные данные
|
|||
|
features['cluster'] = clusters
|
|||
|
|
|||
|
# Вывод результатов кластеризации
|
|||
|
print(features[['housing_median_age', 'total_rooms', 'median_house_value', 'cluster']])
|
|||
|
|
|||
|
clustered_data = features.groupby('cluster').describe()
|
|||
|
print(clustered_data)
|
|||
|
|
|||
|
# Визуализация результатов кластеризации с использованием seaborn
|
|||
|
plt.figure(figsize=(12, 6))
|
|||
|
sns.scatterplot(x='housing_median_age', y='total_rooms', size='median_house_value', sizes=(10, 200), hue='cluster', palette='viridis', data=features)
|
|||
|
plt.title('Clustering Results')
|
|||
|
plt.xlabel('Housing Median Age')
|
|||
|
plt.ylabel('Total Rooms')
|
|||
|
plt.show()
|