0

この方法を適用する場合:

%% When an outlier is considered to be more than three standard deviations away from the mean, use the following syntax to determine the number of outliers in each column of the count matrix:

mu = mean(data)
sigma = std(data)
[n,p] = size(data);
% Create a matrix of mean values by replicating the mu vector for n rows
MeanMat = repmat(mu,n,1);
% Create a matrix of standard deviation values by replicating the sigma vector for n rows
SigmaMat = repmat(sigma,n,1);
% Create a matrix of zeros and ones, where ones indicate the location of outliers
outliers = abs(data - MeanMat) > 3*SigmaMat;
% Calculate the number of outliers in each column
nout = sum(outliers) 
% To remove an entire row of data containing the outlier
data(any(outliers,2),:) = []; %% this line

最後の行は、データセットから特定の数の観測値(行)を削除します。ただし、観測値(行)の数を1000と手動で指定したため、プログラムの後半で問題が発生します。

%% generate sample data
K = 6;
numObservarations = 1000;
dimensions = 3;

に変更numObservarationsするdataとスカラー出力エラーが発生しますが、変更しないと行数が一致しないため、次のエラーが発生します。

??? Error using ==> minus
Matrix dimensions must agree.

Error in ==> datamining at 106
    D(:,k) = sum( ((data -
    repmat(clusters(k,:),numObservarations,1)).^2), 2);

numObservarationsの行数を自動的に検出し、dataそれを単なる数値として出力するように設定する方法はありますか?

4

1 に答える 1

5

私は何かを誤解しているに違いありません。私の知る限り、これで十分です。

numObservations = size(data, 1);
于 2012-07-12T15:52:34.717 に答える