KNN トレーニングについて質問があります。CM Bishop著のPattern Recognition and Machine Learningのような KNN を実装したいと考えています。条件付き密度 *p(x|C_k)=K_k\N_kV*、無条件密度p(x)=K\NV、およびクラスの事前確率 *p(C_k)=N_k\N* を見つける必要があります。次に、ベイズの定理に代入すると、事後確率が得られます。
私の問題はプログラミングにあります。5 つのクラスがあるとします。これらのクラスでは、特徴ベクトルの長さが異なります。クラス 1 は100
、クラス 2 は344
、クラス 3 は541
... クラス 5 は を持っていn
ます。そして、それらすべてを合計すると、100 の完全な次元 (数の特徴ベクトル) と FV 1 の数のラベル ベクトルになります。
for loop
ここで私の質問:すべてのクラス (異なる長さ) が 1 つの行列に特徴ベクトルを次々に格納するため、事前確率を実装したい場合、すべてのクラスを反復処理することはできません。
%% Code fragment out of ML-KNN: A lazy learning approach to multilabel learning Min-Ling Zhang, Zhi-Hua Zhou
for i=nclass
temp_Ci=sum(train_target(i,:)==ones(1,num_training));
Prior(i,1)=(Smooth+temp_Ci)/(Smooth*2+num_training);
PriorN(i,1)=1-Prior(i,1);
end
では、Matlab で事前確率を実装するにはどうすればよいでしょうか?