Hierarchy Tree Builder

Программа для построения деревьев иерархического кластерного анализа матриц данных


Скрипт 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

Работа с программой

1) выбираем CSV файл с данными

2) выбираем кодировку файла

3) выбираем использованный разделитель ячеек

4) выбираем метод расчета расстояния (ниже описание методов)

5) выбираем ориентацию дерева

6) выбираем ориентацию подписей (при ориентации дерева - top, например, надписи следует повернуть на 270, чтобы они не налезали друг на друга и не сливались)

7) строим дерево. откроется окно с изображением, которое можно сохранить.

8) вывод отчета по шагам программы. результат, или возникшая ошибка, например, в формате входного файла.



Результат
Построенное дерево.


Деревья сохраняются сразу в папку output (создастся рядом с  файлом программы) и также их можно вручную сохранить из открывшегося окна.


При ручном сохранении есть возможность выбрать размер и масштаб дерева, сохранить его часть, например.


Настройки программы сохраняются в ini-файл, который создаётся рядом с программой.


Методы расчета

метод расчета расстояния между вновь образованными кластерами u и v:

  • method = ‘single’

            d(u,v) = min(dist(u[i],u[j]))

Для всех точек i в u и всех точек j в v - алгоритм ближайшей точки (ближайшего соседа).


  • method = 'complete'

             d(u,v) = max(dist(u[i],u[j]))

Для всех точек i в u и всех точек j в v - алгоритм самой дальней точки или алгоритм Voor Hees.


  • method = 'average'

                

| u |, | v | - это количество элементов в кластерах u и v, которое называется методом UPGMA (невзвешенное групповое среднее).


  • method = 'weighted'

            d(u,v) = (dist(s,v) + dist(t,v))/2

u формируется из s и t, а v - это оставшиеся кластеры в лесу. Метод WPGMA (взвешенное групповое среднее).


  • method = 'centroid'

Cs и Ct являются центрами кластеров кластеров s и t, соответственно. Когда s и t образуют новый кластер, центроид центра кластера будет пересчитан на s и t.

Этот кластер становится евклидовым расстоянием между центроидом u и центроидом остальных кластеров v.

Метод - алгоритм UPGMC (невзвешенный парно-групповой метод с использованием центроида).


  • method = 'median'
Когда два кластера s и t объединяются в новый кластер u, среднее значение центроидов s и t называется центроидом u. Это называется алгоритмом WPGMC.


  • method = 'ward' (алгоритм минимизации дисперсии Уорда)

Новый вход d (u, v) рассчитывается по следующей формуле:

        

u - новый кластер, состоящий из s и t, а v - неиспользуемый кластер в лесу. T = | v | + | s | + | t |, | * | - количество наблюдений в кластере.



Cайт программы

Фотоальбом





Комментарии

capcha
* - поля, обязательные для заполнения