2014-03-19 4 views
1

아이리스 데이터를 k 가장 가까운 이웃 (k = 1 : 30)을 사용하여 분류해야합니다. 데이터를 샘플로 나누고 Leave-one-out 십자가 C는 (첫 번째 샘플을 위해) 다시 하나 개의 값을 나에게 반환하기 때문에 사람이 도움이 될 수 있습니다, 어디에 문제가,leave-one-out 교차 유효성 검사 및 혼돈 행렬 kn

load fisheriris 
group=[ones(1,50), 2*ones(1,50), 3*ones(1,50)]'; 

    for k=(1:30); 
     for i=(1:150); 
     sample=meas(i,:); 
     training1=meas; 
     training1(i,:)=[]; 
     group_sample=group(i); 
     group_training=group; 
     group_training(i)=[]; 
     c(i,k)=knnclassify(sample,training1,group_training,k); 

     A=confusionmat(group, c(i,k)); 
     mean_error(k)=mean(A(:)); 
     std_error(k)=std(A(:)); 
     end 
    end 

문제는 내가 혼란 행렬을 만들 수 없다는 것입니다 : 검증, 그래서 나는 다음과 같은 스크립트가? ? 감사!

답변

1

난 당신이 후 아마 것 같아요 :

for k=1:30 

    for i=1:150 
     sample=meas(i,:); 
     training1=meas; 
     training1(i,:)=[]; 
     group_sample=group(i); 
     group_training=group; 
     group_training(i)=[]; 
     c(i,k)=knnclassify(sample,training1,group_training,k); 
    end 

    A=confusionmat(group, c(:,k)); 
    mean_error(k)=mean(A(:)); 
    std_error(k)=std(A(:)); 

end 

그래서 다른 단어 만 교차 검증 루프 후 혼란 행렬을 찾을 수 있습니다.

+0

매우 효과적입니다! – user19565

+0

@ user19565 문제가 없다면 문제가 해결되면 해결할 수 있습니다. http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – Dan