📄 knn_cross.m
字号:
function knn_cross(datafile,cross,k)
%# load datafile
eval(sprintf('load %s.txt',datafile));
eval(sprintf('data=%s; clear %s',datafile,datafile));
%# Normalize data
[num,dim]=size(data);
data(:,1:dim-1)=Dat_Normalize(data(:,1:dim-1),0);
[Tr_index,Te_index]=Dat_FolderCut(num, cross);
ret = [];
lab = [];
for k = 1 : cross
tr_data = data(Tr_index{k},:);
te_data = data(Te_index{k},:);
clab = [];
for j = 1:size(te_data,1)
[computed] = knn(te_data(j,1:dim-1), tr_data(:,1:dim-1), tr_data(:,end), k);
lab = [lab computed];
clab = [clab computed];
end
tmp = te_data(:,end) - clab';
rec = length(find(tmp == 0)) / length(tmp);
ret = [ret rec];
end
cret=[];
for k =1: max(data(:,end))
idx =[];
for j =1:length(Te_index) idx= [idx Te_index{j}]; end
ctmp=data(idx,end);
dtmp=find(ctmp ==k);
cret =[cret length(find(lab(dtmp)==k))/length(dtmp)];
end
for k =1:cross
disp(sprintf('%d-folder cross-validation Cross %d:%f\%',cross, k, ret(k)*100));
end
disp(sprintf('\n%d-folder cross-validation Average:%4.2f +/- %2.0f',cross, mean(ret)*100, floor((max(ret)-min(ret))/2*100)));
disp(sprintf('\n Class Accuracy:'));
for k= 1:length(cret)
disp(sprintf('Class %d: %4.2f \%',k, cret(k)*100));
end
disp(sprintf('\n Class Accuracy biased ratio:%4.2f', std(cret)/mean(cret)));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -