Во-вторых, иерархическая кластеризация может быть более точной, чем вы хотите, так как вы можете легко указать функцию расстояния.
Однако, если вы действительно хотите использовать k-means, вы можете создать матрицу расстояний, используя любую понравившуюся вам функцию, и разбить вашу матрицу расстояний на пространство объектов, используя SVD. Затем выполните k-средних в новом пространстве признаков, представленном баллами SVD.
Я не знаю, что K-средства будут сходиться с другими метриками расстояния.