Я пытаюсь «расставить» строки матрицы, содержащей центроиды некоторых кластеров, которые не находятся в том же порядке, что и порядок, в котором образцы были назначены кластерам.Сначала я сравнивал абсолютное значение расстояния между точками данных среднего значения и центрами кластеров и назначал индекс строки, у которой было наименьшее расстояние.Конечно, мне не разрешено иметь дубликаты индексов.Это работало довольно хорошо, но симметричные значения поднимают проблему (то есть, из-за абсолютного значения для расстояния, зеркальные кластеры не были упорядочены должным образом).Также я попытался заказать их на основе дисперсии, не получилось, как ожидалось.Я смотрел на функции order () и sort () и нашел пример, который не работал.
order(mean)
order(mean)[centers]
sort(order(mean)[centers])
mean[sort(order(mean)[centers])]
Я также попробовал
apply(mean==centers,1,all)
, но, конечно, это простовезде возвращает FALSE.
Пример матриц:
means <- c(0.055190097, 0.032412395, 0.015372307, -0.008012372,
-0.018736792, -0.078138715, -0.058707713, -0.044020629,
-0.023750329, -0.014402083, -0.069920581, -0.064429216,
-0.059913345, -0.052302253, -0.047874074, 0.050557395,
0.047246979, 0.044577065, 0.040384336, 0.038140009,
0.114954601, 0.108110051, 0.102531680, 0.093341425, 0.088140310)
dim(means) <- c(5,5)
means <- t(means)
centers <- c(-0.038754, -0.021588,-0.008851, 0.008579, 0.016579,
0.018371, 0.006095, -0.003026, -0.015537, -0.021286,
-0.078143, -0.069267, -0.062197, -0.051295, -0.045521,
0.033145, 0.033348, 0.033354, 0.032947, 0.032511,
0.115464, 0.105248, 0.097172, 0.084732, 0.078162)
dim(centers) <- c(5,5)
centers <- t(centers)
Например, (с приведенным выше примером) строка 2 из матрицы означает, что соответствует строке 3из матрицы центров , так как она ближе всего к расстоянию (точка данных).Итак, я должен найти, какая строка из означает, что соответствует какой линии в центрах (без дубликатов).Мои матрицы больше, но этого должно быть достаточно в качестве примера. У вас есть предложения?Спасибо