import pandas as pd import matplotlib.pyplot as plt from scipy.cluster.hierarchy import dendrogram, linkage # Загрузка данных из таблицы data = pd.read_csv('ufo_sighting_data.csv') # Отбор необходимых столбцов columns = ['UFO_shape', 'length_of_encounter_seconds', 'latitude', 'longitude'] data = data[columns] # Замена отсутствующих значений data = data.fillna('Unknown') # Преобразование данных в числовые значения, если необходимо # Например, можно преобразовать столбец 'length_of_encounter_seconds' из строкового в числовой формат data['length_of_encounter_seconds'] = pd.to_numeric(data['length_of_encounter_seconds'], errors='coerce') # Выполнение иерархической кластеризации # Можно выбрать разные методы и метрики для кластеризации # Ниже пример с использованием евклидова расстояния и метода ward linkage_matrix = linkage(data[['latitude', 'longitude']], method='ward', metric='euclidean') # Построение дендрограммы plt.figure(figsize=(10, 7)) dendrogram(linkage_matrix) plt.xlabel('Наблюдения') plt.ylabel('Расстояние') plt.title('Дендрограмма') plt.show()