/ / clusterdata Matlab関数 - matlab、統計、クラスタ解析、階層的クラスタリング

clusterdata Matlab関数 - matlab、統計、クラスタ解析、階層的クラスタリング

私はMatlabのclusterdata関数を使用しています私のデータ(ノイズと非ノイズ)をノイズと非ノイズの2つのカテゴリに分類します。この機能は、すべてのノイズデータをグループ1とし、すべてのノンノイズデータをグループ2とすることがある点を除いて、機能します。グループ2としてすべてのノイズデータを、グループ1としてすべてのノンノイズデータを指定することがあります。

どうすればそれを制御できますか?私はすべてのノイズデータをグループ1としてラベル付けすることを意味します。

回答:

回答№1は0

ラベルの名前を制御できる教師なし学習アルゴリズムの使用は一般的に問題となり得る。私はクラスタリングを行った後で、ラベルがあなたが望むものであるかどうかを確認した後、データの機能のいくつかを評価しようとします。

すべてのデータがX(N×d)マトリックスに含まれている場合、aラベルベクトル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;