Иерархическая кластеризация с разным размером выборки на Python
Я хотел бы знать, возможно ли делать иерархическую кластеризацию с разным размером выборки на Python? Точнее, с помощью метода минимальной дисперсии Уорда.
Например, у меня есть 5 списков целых чисел, A, B, C, D, E различной длины. Я хочу сгруппировать эти 5 списков в 3 группы в соответствии с методом Уорда (уменьшение дисперсии для объединяемого кластера).
Кто-нибудь знает, как это сделать?
1 ответ
Мы можем рассмотреть эти 5 списков - ваши образцы, которые вы хотите объединить в 3 группы. Иерархический кластер, как вы знаете, может принимать в качестве входных матриц расстояния. Матрицы расстояний оценивают некоторый вид парных расстояний (или различий) между вашими выборками.
Вы должны построить эту матрицу 5x5, выбрав значимую функцию расстояния. Это очень зависит от того, что представляют ваши образцы / целые числа. Поскольку ваши образцы не имеют постоянной длины, вы не можете вычислить такие метрики, как евклидово расстояние.
Например, если целые числа в ваших списках можно интерпретировать как классы, вы можете вычислить индекс Жакара, чтобы выразить какое-то различие.
[1 2 3 4 5] и [1 3 4] имеют индекс подобия Жакара 3/5 (или различие 2/5).
0 - это совершенно другое, а 1 - абсолютно идентично
https://en.wikipedia.org/wiki/Jaccard_index
Как только ваша матрица различий вычислена (фактически она представляет только 5, выберите 2 = 10 различных значений, так как эта матрица симметрична), вы можете применить к ней иерархическую кластеризацию.
Важной частью является нахождение адаптированной функции расстояния к вашей проблеме.