GMMを使用してテストセットを分類しようとしています。私はラベル{1,2,3}の列車セット(n * 4行列)を持っています、nは4つの特性を持つトレーニング例の数を意味します。また、分類されるテストセット(m * 4)もあります。GMMとMATLABを使用した分類
私の目標は、各ラベルを与える試験例ごとに確率行列(m * 3)を持つことです。P(x_test|labels)
。ソフトクラスタリングと同じように。
まず、全トラックセットにわたってk = 9の成分でGMMを作成します。私はいくつかの論文で知っている、著者はtrainsetの各ラベルのGMMを作成します。しかし、私はすべてのクラスのデータを扱いたい。
GMModel = fitgmdist(trainset,k_component,'RegularizationValue',0.1,'Start','plus');
私の問題は、コンポーネントとラベルの間の関係P(component|labels)
を確認したいと思います。だから私は以下のようにコードを書くが、それは正しいですかどうかわからない、
idx_ex_of_c1 = find(trainset_label==1);
idx_ex_of_c2 = find(trainset_label==2);
idx_ex_of_c3 = find(trainset_label==3);
[~,~,post] = cluster(GMModel,trainset);
cita_c_k = zeros(3,k_component);
for id_k = 1:k_component
cita_c_k(1,id_k) = sum(post(idx_ex_of_c1,id_k))/numel(idx_ex_of_c1);
cita_c_k(2,id_k) = sum(post(idx_ex_of_c2,id_k))/numel(idx_ex_of_c2);
cita_c_k(3,id_k) = sum(post(idx_ex_of_c3,id_k))/numel(idx_ex_of_c3);
end
cita_c_k
は関係を格納する(3 * 9)行列です。 idx_ex_of_c1
は、trainsetのラベルが '1'の例のインデックスです。
テストプロセスです。私が最初に
[P,~] = posterior(GMModel,testset); % P is a m*9 matrix
そして、合計のすべてのコンポーネント、
P_testset = P*cita_c_k';
[a,b] = max(P_testset,3);
imagesc(b);
結果がOKである、しかし、十分ではないがTESTSETするGMModelを適用します。誰も私にいくつかのヒントを与えることができますか
ありがとうございます!
(常に)時系列を訓練する時間遅延ネットワークを使用して、直接のポイントではなく、訓練しますあなたのGMMのためのnents?実際には、5〜7個のコンポーネントしか使用しない非常に複雑なトレーニングセットがありました。 – GameOfThrows
最高のパフォーマンスを発揮できるコンポーネントの数がわかりません。多分あなたは正しいです。最適な#成分を見つけるつもりです。 –