У меня есть матрица расстояний n * n M
, где M_ij
- расстояние между object_i
и object_j
. Итак, как и ожидалось, он принимает следующий вид:
/ 0 M_01 M_02 ... M_0n\
| M_10 0 M_12 ... M_1n |
| M_20 M_21 0 ... M2_n |
| ... |
\ M_n0 M_n2 M_n2 ... 0 /
Теперь я хочу сгруппировать эти n объектов с иерархической кластеризацией. Python имеет реализацию этого под названием scipy.cluster.hierarchy.linkage(y, method='single', metric='euclidean')
.
В его документации говорится:
y должен быть вектором размера {n\choose 2}, где n - число исходные наблюдения, спаренные в матрице расстояний.
y: ndarray
Конденсированная или избыточная матрица расстояний. Конденсированный матрица расстояний представляет собой плоскую матрицу, содержащую верхнюю треугольную дистанционная матрица. Это форма, возвращаемая pdist. В качестве альтернативы, коллекция m векторов наблюдения в n измерениях может быть передана как массив m по n.
Я смущен этим описанием y
. Могу ли я напрямую передать свой M
в качестве входа y
?
Обновление
@hongbo-zhu-cn поднял эту проблему в GitHub. Это именно то, о чем я говорю. Однако, как новичок в GitHub, я не знаю, как это работает, и поэтому не знаю, как справиться с этой проблемой.