我对KNN培训有疑问。我想在C. M. 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(数字特征向量)的全维度和数字为1的标签向量。
现在我的问题:当我想要实现我的先验时,我不能只用for loop
遍历所有类,因为我的所有类(不同长度)都存储在一个矩阵中,其中一个特征向量一个另一个
%% 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中实现先验?