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 + -
显示快捷键?