initmapweights.m
来自「有监督自组织映射-偏最小二乘算法(A supervised self-organ」· M 代码 · 共 52 行
M
52 行
function [XMap,YMap] = InitMapWeights(X, Y, MLKP);
%
% reset random generator to a fixed sequence
% this yields reproducable map weights
if upper(MLKP.FixedRandomWeights) == 'Y'
rand('state',MLKP.RandomInitWeights);
else
rand('state',sum(100*clock));
end
%
% start initialisation
[Nobjects, NvarX] = size(X);
if (upper(MLKP.InitMode) == 'SELECT' & Nobjects > MLKP.Nunits)
PermList=randperm(Nobjects);
X=X(PermList,:);
XMap=X(1:MLKP.Nunits,:)'*MLKP.InitFract;
if (upper(MLKP.ProblemType) =='CLS' | upper(MLKP.ProblemType) =='REG')
Y=Y(PermList,:);
YMap=Y(1:MLKP.Nunits,:)'*MLKP.InitFract;
end
else
if (upper(MLKP.InitMode) == 'SELECT')
disp('Not enough objects in data set available: random weight initialisation applied');
end
MinValX = min(X);
MaxValX = max(X);
MeanValX = mean(X);
RangeValX = (MaxValX-MinValX)*MLKP.InitFract;
if (upper(MLKP.ProblemType) ~='MAP')
[Nobjects, NvarY] = size(Y);
MinValY = min(Y);
MaxValY = max(Y);
MeanValY = mean(Y);
RangeValY = (MaxValY-MinValY)*MLKP.InitFract;
end
for iunit=1:MLKP.Nunits
for ivar = 1:NvarX
XMap(ivar,iunit) = MeanValX(ivar)+2*(rand-0.5)*RangeValX(ivar);
end
if (upper(MLKP.ProblemType) ~='MAP')
for ivar = 1:NvarY
YMap(ivar,iunit) = MeanValY(ivar)+2*(rand-0.5)*RangeValY(ivar);
end
else
YMap=[];
end
end
end
%
% reset random generator to an arbitrary starting point
rand('state',sum(100*clock));
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?