Я думаю, что пост предлагает работать со средневзвешенным значением.
Вы можете создать новый набор данных из старого, и новый набор данных будет иметь дополнительный атрибут для каждой точки, ее частоту (т.е. этовес).
Каждый раз, когда вы вычисляете новый центроид для каждого кластера, возьмите средневзвешенное значение всех точек этого кластера (вместо вычисления простого среднего значения всех точек).
PS: манипулирование набором данных опасно.Я бы распараллелил код, если бы вычислительные затраты были основным фактором.