31 lines
1.4 KiB
Python
31 lines
1.4 KiB
Python
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()
|