Я пытаюсь обнаружить и удалить выбросы из набора данных (1372 строки, 4 столбца).
Я написал код для их поиска, но я не уверен, что это лучший способ. Хотя я пытался удалить их, но вместо того, чтобы быть удаленным, номер 32 заменяет их. Я не могу понять, почему.
% Find outliers
meanValue = mean(data_banknote_authentication(:,1:4));
absoluteDeviation = abs(data_banknote_authentication(:,1:4) - meanValue);
mad = median(absoluteDeviation);
sensitivityFactor = 3 % I am not sure if this is correct
thresholdValue = sensitivityFactor * mad;
outlierIndexes = abs(absoluteDeviation) > thresholdValue
outliers = data_banknote_authentication(:,1:4)(outlierIndexes);
nonOutliers = data_banknote_authentication(:,1:4)(~outlierIndexes);
% Remove outliers
for i=1:1372
for k=1:4
if (outlierIndexes(i,k) == 1)
data_banknote_authentication(i,k) = ' ';
%data_banknote_authentication(i,k) = " ";
endif
endfor
endfor
Я хочу удалить выбросы, но фактический результат заключается в том, что на их месте теперь число 32. Как я могу удалить их из набора данных?