@gung абсолютно прав, предлагая вам многомерное масштабирование (MDS) в качестве предварительного инструмента для создания points X dimensions
данных из матрицы расстояний. Я должен добавить только несколько ударов. К-средняя кластеризация подразумевает евклидовы расстояния . MDS даст вам координаты точек в измерениях, тем самым гарантируя вам евклидовы расстояния. Вы должны использовать метрическую MDS и запрашивать максимально возможное количество измерений, потому что ваша цель - минимизировать ошибку повторного преобразования данных, а не отображать их в 2D или 3D.
Что если у вас под рукой нет программного обеспечения MDS, но есть некоторые матричные функции, такие как разложение по собственным значениям или разложение по сингулярным значениям? Тогда вы могли бы сделать простую метрическую MDS самостоятельно - Torgerson MDS, также известную как анализ основных координат (PCoA). Это немного «скрученный» анализ главных компонентов. Я не буду описывать это здесь, хотя это довольно просто. Вы можете прочитать об этом во многих местах, например, здесь .
Наконец, можно напрямую запрограммировать «K-средства для ввода матрицы расстояния» - без вызова или записи функций, выполняющих PCoA или другую метрическую MDS. Мы знаем, что (а) сумма квадратов отклонений от центроида равна сумме попарно возведенных евклидовых расстояний, деленной на количество точек; и (b) знать, как вычислять расстояния между центроидами кластеров из матрицы расстояний ; (c) и мы также знаем, как суммы квадратов взаимосвязаны в K-средних. Все вместе делает написание алгоритма, который вы хотите, простым и не сложным делом. Однако следует помнить, что K-средства предназначены только для евклидовых расстояний / евклидова пространства. Используйте K-medoids или другие методы для неевклидовых расстояний.
Похожий вопрос .