Функция Matlab для кластерных данных - PullRequest
0 голосов
/ 08 декабря 2011

Я использую функцию кластерных данных Matlab, чтобы классифицировать мои данные (шум и не шум) на 2 категории: группы шума и не шум.Функция работает хорошо, за исключением того, что иногда она называет все данные шума как группу 1, а все данные без шума - как группу 2. Иногда она называет все данные шума как группу 2, а все данные без шума - как группу 1.

Как я могу это контролировать?Я имею в виду все данные о шуме как группа 1.

1 Ответ

0 голосов
/ 08 декабря 2011

Наличие контроля над именами меток, которые использует алгоритм обучения без присмотра, обычно может быть проблемой.Я предлагаю попробовать оценить некоторые особенности данных после выполнения кластеризации, чтобы увидеть, соответствуют ли они тем меткам, которые вам нужны.

Если все ваши данные представлены в виде матрицы 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...