Программа для построения деревьев иерархического кластерного анализа матриц данных
Скрипт Python для иерархического кластерного анализа.
Скомпилирован pyinstaller в исполняемый файл x64 для ОС Windows.
Работа протестирована в ОС x64 Windows 7 и ОС x64 Windows 10.
В основе лежит библиотека SciPy и ее модуль для иерархического кластерного анализа scipy.cluster.hierarchy.
Входящие данные
В первой колонке — наименования образцов. В первой строке — названия признаков. Сохраняем как CSV файл.
Разделитель — запятая (или точка с запятой, или двоеточие, или | ), кодировка файла UTF-8 или cp1251.
В UTF-8 по умолчанию сохраняются файлы в OS Linux, в cp1251 - в OS Windows.
В ячейках могут содержаться как целочисленные значения, так и дробные. Во втором случае, разделитель целого и дробного числа — точка!
Так правильно: 15.23
Так — неправильно: 15,23
Образец файла
NUM,param1,locusTGLA53_a1,l_TGLA53_a2,l_TGLA122_a1,l_TGLA122_a2,l_TGLA126_a1,l_TGLA126_a2,l_TGLA227_a1,l_TGLA227_a2
NUM_10161,3793,168,168,143,151,115,121,83,91
NUM_12,4015,166,166,151,161,117,123,91,91
NUM_40240,4831,160,166,143,151,115,117,83,87
NUM_78660,5606,160,166,143,151,115,115,87,97
NUM_78669,5615,160,166,143,143,115,117,89,93
NUM_1073,5636,166,166,141,151,115,115,87,97
NUM_640,5872,166,168,143,151,115,117,87,89
NUM_680,5945,166,170,147,151,115,115,89,89
NUM_20227,5951,166,166,143,151,115,117,87,89
NUM_78712,6136,168,170,147,151,115,115,81,89
NUM_50263,6171,166,170,143,143,115,117,87,91
NUM_730,6258,166,178,143,151,117,117,91,91
NUM_30254,6317,160,160,143,143,115,117,87,89
NUM_635,6499,166,168,143,183,115,117,91,93
2) выбираем кодировку файла
3) выбираем использованный разделитель ячеек
4) выбираем метод расчета расстояния (ниже описание методов)
5) выбираем ориентацию дерева
6) выбираем ориентацию подписей (при ориентации дерева - top, например, надписи следует повернуть на 270, чтобы они не налезали друг на друга и не сливались)
7) строим дерево. откроется окно с изображением, которое можно сохранить.
8) вывод отчета по шагам программы. результат, или возникшая ошибка, например, в формате входного файла.
Результат
Построенное дерево.
При ручном сохранении есть возможность выбрать размер и масштаб дерева, сохранить его часть, например.
Настройки программы сохраняются в ini-файл, который создаётся рядом с программой.
Методы расчета
метод расчета расстояния между вновь образованными кластерами u и v:
d(u,v) = min(dist(u[i],u[j]))
Для всех точек i в u и всех точек j в v - алгоритм ближайшей точки (ближайшего соседа).
d(u,v) = max(dist(u[i],u[j]))
Для всех точек i в u и всех точек j в v - алгоритм самой дальней точки или алгоритм Voor Hees.
| u |, | v | - это количество элементов в кластерах u и v, которое называется методом UPGMA (невзвешенное групповое среднее).
d(u,v) = (dist(s,v) + dist(t,v))/2
u формируется из s и t, а v - это оставшиеся кластеры в лесу. Метод WPGMA (взвешенное групповое среднее).
Cs и Ct являются центрами кластеров кластеров s и t, соответственно. Когда s и t образуют новый кластер, центроид центра кластера будет пересчитан на s и t.
Этот кластер становится евклидовым расстоянием между центроидом u и центроидом остальных кластеров v.
Метод - алгоритм UPGMC (невзвешенный парно-групповой метод с использованием центроида).
Новый вход d (u, v) рассчитывается по следующей формуле:
u - новый кластер, состоящий из s и t, а v - неиспользуемый кластер в лесу. T = | v | + | s | + | t |, | * | - количество наблюдений в кластере.