📄 checkoutknn.m
字号:
% n-fold cross validating procedure
function [pso_rmse2]=checkoutknn(cdata,pso,x)
% cdata: 校数集
% pso: 被测试的粒子
% x: 类标号
% pso_rsme: results
feature=cdata;
[n,p1]=size(cdata);
n1=floor(round(n/2));
d10=zeros(2,10);
dn=zeros(2,n);
for i=1:n
dn(1,i)=10000;
end
for i=1:10
d10(2,i)=10000;
end
%feature=cdata(:,pso);
% [ps,pp]=size(pso);
%[cn,cp]=size(cmodel);
for i=1:6
pso_rmse1(i)=0.0;
end
%pso_rmse=zeros(ps,10);
%for hh=1:10
% pso_rmse(hh)=0;%%运算前每个粒子的指标归零,重新计算
%end
%x=zeros(n,2);
for j=1:n1%%二折交叉验证开始
d10=zeros(2,10);
for q=1:n
dn(2,q)=10000;
end
for b=(n1+1):n%%对前345个样本计算与后345个样本的距离
%d=sqrt(pso(1)*(feature(b,1)-feature(j,1))*(feature(b,1)-feature(j,1))+pso(2)*(feature(b,2)-feature(j,2))*(feature(b,2)-feature(j,2))+pso(3)*(feature(b,3)-feature(j,3))*(feature(b,3)-feature(j,3))+pso(4)*(feature(b,4)-feature(j,4))*(feature(b,4)-feature(j,4))+pso(5)*(feature(b,5)-feature(j,5))*(feature(b,5)-feature(j,5))+pso(6)*(feature(b,6)-feature(j,6))*(feature(b,6)-feature(j,6))+pso(7)*(feature(b,7)-feature(j,7))*(feature(b,7)-feature(j,7))+pso(8)*(feature(b,8)-feature(j,8))*(feature(b,8)-feature(j,8))+pso(9)*(feature(b,9)-feature(j,9))*(feature(b,9)-feature(j,9))+pso(10)*(feature(b,10)-feature(j,10))*(feature(b,10)-feature(j,10))+pso(11)*(feature(b,11)-feature(j,11))*(feature(b,11)-feature(j,11))+pso(12)*(feature(b,12)-feature(j,12))*(feature(b,12)-feature(j,12))+pso(13)*(feature(b,13)-feature(j,13))*(feature(b,13)-feature(j,13))+pso(14)*(feature(b,14)-feature(j,14))*(feature(b,14)-feature(j,14))+pso(15)*(feature(b,15)-feature(j,15))*(feature(b,15)-feature(j,15)));
dn(2,b)=sqrt(pso.*(feature(b,:)-feature(j,:))*(feature(b,:)-feature(j,:))');
dn(1,b)=x(b,1);
end
x(j,2)=knn(dn);
pso_rmse1(1)=pso_rmse1(1)+(x(j,1)-x(j,2))*(x(j,1)-x(j,2));%%离差在循环中累加,共345次;
if x(j,1)==1&x(j,2)==1%%判定分类正误
pso_rmse1(3)=pso_rmse1(3)+1;
end
if x(j,1)==1&x(j,2)==0%%判定分类正误
pso_rmse1(4)=pso_rmse1(4)+1;
end
if x(j,1)==0&x(j,2)==1%%判定分类正误
pso_rmse1(5)=pso_rmse1(5)+1;
end
if x(j,1)==0&x(j,2)==0%%判定分类正误
pso_rmse1(6)=pso_rmse1(6)+1;
end
end % end of j=1:n1
for j=(n1+1):n
d10=zeros(2,10);
for q=1:n
dn(2,q)=10000;
end
for b=1:n1%%对前345个样本计算与后345个样本的距离
%d=sqrt(pso(1)*(feature(b,1)-feature(j,1))*(feature(b,1)-feature(j,1))+pso(2)*(feature(b,2)-feature(j,2))*(feature(b,2)-feature(j,2))+pso(3)*(feature(b,3)-feature(j,3))*(feature(b,3)-feature(j,3))+pso(4)*(feature(b,4)-feature(j,4))*(feature(b,4)-feature(j,4))+pso(5)*(feature(b,5)-feature(j,5))*(feature(b,5)-feature(j,5))+pso(6)*(feature(b,6)-feature(j,6))*(feature(b,6)-feature(j,6))+pso(7)*(feature(b,7)-feature(j,7))*(feature(b,7)-feature(j,7))+pso(8)*(feature(b,8)-feature(j,8))*(feature(b,8)-feature(j,8))+pso(9)*(feature(b,9)-feature(j,9))*(feature(b,9)-feature(j,9))+pso(10)*(feature(b,10)-feature(j,10))*(feature(b,10)-feature(j,10))+pso(11)*(feature(b,11)-feature(j,11))*(feature(b,11)-feature(j,11))+pso(12)*(feature(b,12)-feature(j,12))*(feature(b,12)-feature(j,12))+pso(13)*(feature(b,13)-feature(j,13))*(feature(b,13)-feature(j,13))+pso(14)*(feature(b,14)-feature(j,14))*(feature(b,14)-feature(j,14))+pso(15)*(feature(b,15)-feature(j,15))*(feature(b,15)-feature(j,15)));
dn(2,b)=sqrt(pso.*(feature(b,:)-feature(j,:))*(feature(b,:)-feature(j,:))');
dn(1,b)=x(b,1);
end
x(j,2)=knn(dn);
pso_rmse1(1)=pso_rmse1(1)+(x(j,1)-x(j,2))*(x(j,1)-x(j,2));%%离差在循环中累加,共345次;
if x(j,1)==1&x(j,2)==1%%判定分类正误
pso_rmse1(3)=pso_rmse1(3)+1;
end
if x(j,1)==1&x(j,2)==0%%判定分类正误
pso_rmse1(4)=pso_rmse1(4)+1;
end
if x(j,1)==0&x(j,2)==1%%判定分类正误
pso_rmse1(5)=pso_rmse1(5)+1;
end
if x(j,1)==0&x(j,2)==0%%判定分类正误
pso_rmse1(6)=pso_rmse1(6)+1;
end
end % end of j=(n1+1):n
pso_rmse1(1)=sqrt(pso_rmse1(1)/n);%%计算离差
pso_rmse1(7)=pso_rmse1(3)/(pso_rmse1(3)+pso_rmse1(4));%% 第一类分类正确率
pso_rmse1(8)=pso_rmse1(6)/(pso_rmse1(5)+pso_rmse1(6));%% 第二类分类正确率
pso_rmse1(9)=(pso_rmse1(7)+pso_rmse1(8))/2;%%分类正确率平均值
pso_rmse1(10)=(pso_rmse1(6)+pso_rmse1(3))/(pso_rmse1(3)+pso_rmse1(4)+pso_rmse1(5)+pso_rmse1(6));
pso_rmse2=pso_rmse1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -