Наличие контроля над именами меток, которые использует алгоритм обучения без присмотра, обычно может быть проблемой.Я предлагаю попробовать оценить некоторые особенности данных после выполнения кластеризации, чтобы увидеть, соответствуют ли они тем меткам, которые вам нужны.
Если все ваши данные представлены в виде матрицы X (N xd) с меткойДля вектора Y (N x 1), принимающего значения -1 и 1, можно оценить дисперсию каждого из кластеров.Я подозреваю, что данные шума будут демонстрировать более высокую дисперсию, которую можно использовать для определения необходимости переключения меток.
В приведенном ниже коде 1 должно быть нешумным, а -1 должно быть шумомвыбор меток (групп) облегчает переворачивание меток).
%#Variance summed over all dimensions
varL1 = sum(var(X(Y==1,:)));
varL2= sum(var(X(Y==-1,:)));
%#Flip labels if if L1 is higher than L2
if varL1 > varL2
Y = Y * (-1);
end
Если это сработает, вы можете впоследствии поменять кластер шума на группу 1 и без шума на группу 2 на
Y(Y==1) = 2; %#NB: The order of which these statements are evaluated is important.
Y(Y==-1) = 1;