predictoutput.m
来自「有监督自组织映射-偏最小二乘算法(A supervised self-organ」· M 代码 · 共 48 行
M
48 行
function [Ypredict] = PredictOutput(Xtr,Xtest,XMap,Ytr,YMap,MLKP);
[Dummy, NvarY] = size(Ytr);
[Nobjects,Dummy] = size(Xtest);
if (upper(MLKP.OutputMode) == 'NORMAL')
for iobj=1:Nobjects
YP=zeros(1,NvarY);
XTempMap=XMap;
for i=1:MLKP.OutputConsensus
[Value, Winner] = DetermineWinner(Xtest(iobj,:),XTempMap,MLKP.DistTypeX,MLKP);
YP(1,:)=YP(1,:)+YMap(:,Winner)';
XTempMap(:,Winner)=1.0e+50;
end
Ypredict(iobj,:)=YP(1,:)/MLKP.OutputConsensus;
end
else
[Nobjects,NvarX] = size(Xtr);
WinnerList=zeros(MLKP.Nunits,Nobjects+1);
% determine positions of training objects in Xmap
for iobj=1:Nobjects
[Value, Winner] = DetermineWinner(Xtr(iobj,:),XMap,MLKP.DistTypeX,MLKP);
WinnerList(Winner,1)=WinnerList(Winner,1)+1;
WinnerList(Winner,WinnerList(Winner,1)+1)=iobj;
end
% determine weighted output based on similarities with objects in training set
[Nobjects,NvarX] = size(Xtest);
for iobj=1:Nobjects
XTempMap=XMap;
NormFact=0;
Ypredict(iobj,:)= zeros(1,NvarY);
for i=1:MLKP.OutputConsensus
[Value, Winner] = DetermineWinner(Xtest(iobj,:),XTempMap,MLKP.DistTypeX,MLKP);
if (WinnerList(Winner,1) == 0)
Ypredict(iobj,:) = YMap(:,Winner)';
NormFact=NormFact+1;
else
for iwin=1:WinnerList(Winner,1)
WeightFactor=CalcCorrValues(Xtest(iobj,:),Xtr(WinnerList(Winner,iwin+1),:)');
NormFact=NormFact+WeightFactor;
Ypredict(iobj,:)=Ypredict(iobj,:)+WeightFactor*Ytr(WinnerList(Winner,iwin+1),:);
end
end
XTempMap(:,Winner)=1.0e+50;
end
Ypredict(iobj,:) = Ypredict(iobj,:)/NormFact;
end
end
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?